0

よろしくお願いします。以下を操作するのに助けが必要です:

  • 最終的に、私が持っているコードから親の json 要素 (または任意の json 要素) を更新する最も簡単な方法が本当に必要です。私の var prime 出力を取得して、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"
      }
    }
  }
}
4

1 に答える 1

0

これは常にあります:

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

これにより、有効な JSON オブジェクトが返さparseれますが、JSON の文字列表現を出力したい場合は、その必要さえないかもしれません。これがJSONを走査してキーを更新するよりもパフォーマンスが高いかどうかはわかりません。

于 2016-09-06T15:11:13.217 に答える