2016-09-06 16 views
0

先進的にありがとうございます。 私は次のように操作するいくつかの助けが必要:変更| json要素を操作するか、json要素に名前空間接頭辞を追加する

  • 最終的に、私は本当に私が持っているコードから親JSON要素(または任意のJSON要素)を更新する最も簡単な方法が必要です。私のvarプライム出力を取得し、startNodeをtns:startNodeに変更する方法はありますか?

は、ここで次のように出力し、私のコード

var vPrefix = "tns"; 
var vNamespace = "http://somenamespace.com"; 
var badgerfish = function(text) { 
    return { 
     "$": text 
    }; 
}; 
var prime = {}; 
prime.startNode = {}; 

prime.startNode['@xmlns'] = {"tns": vNamespace}; 

prime.startNode.test1 = badgerfish("testValue1"); 
prime.startNode.test2 = badgerfish("testValue2"); 
prime.startNode.test3 = {}; 
prime.startNode.test3.subtest1 = badgerfish("subtestValue1"); 
var node = JSON.stringify(prime); 
session.output.write(node); 

です:

{ 
    "startNode": { 
    "@xmlns": { 
     "tns": "http:\/\/somenamespace.com" 
    }, 
    "test1": { 
     "$": "testValue1" 
    }, 
    "test2": { 
     "$": "testValue2" 
    }, 
    "test3": { 
     "subtest1": { 
     "$": "subtestValue1" 
     } 
    } 
    } 
} 

と私が達成しようとしているすべては以下の通り(差はstartNode上のみTNS接頭辞である)です。

{ 
    "tns:startNode": { 
    "@xmlns": { 
     "tns": "http:\/\/somenamespace.com" 
    }, 
    "test1": { 
     "$": "testValue1" 
    }, 
    "test2": { 
     "$": "testValue2" 
    }, 
    "test3": { 
     "subtest1": { 
     "$": "subtestValue1" 
     } 
    } 
    } 
} 

答えて

0

いつもあります:

prime = JSON.parse(JSON.stringify(prime).replace(/startNode/g, 'tns:startNode'));

これは有効なJSONオブジェクトをあなたにお返ししますが、あなたも、あなたは出力にJSONの文字列表現をしたい与えparseを必要としない場合があります。私はこれが多かれ少なかれ、キーを更新するためにJSONをトラバースするよりもパフォーマンスが良いかどうかはわかりません。

+0

うわー、...私はばかです。エリックにどうもありがとう。それは...大きなデュ= =) – cerebraldecypher

関連する問題