2017-03-03 24 views
-2

jsonファイルにファイルパスがたくさんあります。パスを指すファイルの内容ですべてのファイルパスを置き換えるスクリプトを作成したいと思います。ファイルのパスをファイルの内容に置き換えます。

たとえばファイルがある:

{ 
    "a": "stuff", 
    "b: { 
     "body": "/stack/over/flow/file.json" 
    }, 
    "c": { 
     "b": "stuff", 
     "body": "here is some plain text" 
    } 
} 

次に、ファイル/stack/over/flow/file.jsonがある:

{ 
    "another": "json" 
} 

と出力ファイルは、そのファイルの内容で/stack/over/flow/file.jsonに代わるが。また、jsonファイルなので、適切なエスケープ処理が必要です。

だから私は必要な二つのことが本当にあります

  1. は、ファイルの内容でファイルパスを交換してください。私は正規表現がここで最も有用だろうと思う。

  2. jsonに適切なエスケープを追加して、別のjsonの本体として送信できるようにします。私はpythons json.dumpsを使うことを考えていました。

これを行うより良い方法がある場合、または他に提案がある場合は教えてください。

+0

最初のスニペットで無効なjsonがあります。 – Dmitry

+1

SOは「私のためのコードです」ウェブサイトではありませんが、誰かがあなたにこれをやることに興味を持っているかもしれません;-) – Alfe

+2

OPは起動していないコードをOPに求めているので。 – Alfe

答えて

0

jsonファイルを読み込んで解析し(json.load())、構造体(辞書、リスト、文字列、または番号)を受け取る必要があります。この構造はツリートラバース(私はこれに対して再帰関数を提案する)と、別のファイルへのリンクに似ている発見されたすべてのリーフについて、同じ再帰的に行い、リンクを計算された内容に置き換える必要があります。

あなたには循環依存がないことを祈ってください! ;-))

関連する問題