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 回答