如何将JSON字符串转换为具有不同结构的JSON字符串

时间:2013-01-12 00:54:55

标签: javascript json

我正在构建一个应用程序,其中从第三方系统检索数据作为JSON字符串。我需要将此JSON字符串转换为另一个具有不同结构的JSON字符串,以便它可以与内部Javascript库中定义的预先存在的函数一起使用。

理想情况下,我希望能够使用Javascript在客户端计算机上执行此转换。

我已将JSONT视为实现此目标的一种方法,但该项目似乎没有得到积极维护:

http://goessner.net/articles/jsont/

是否有实现这一目标的事实上的方法?或者我是否必须滚动自己的映射代码?

3 个答案:

答案 0 :(得分:2)

您不应该将JSON传递到内部JavaScript库。您应该将JSON解析为JS对象,然后对其进行迭代,将其转换为新格式

实施例

var json = '[{"a": 1:, "b": 2}, {"a": 4:, "b": 5}]';
var jsObj = JSON.parse(json);
// Transform property a into aa and property b into bb
var transformed = jsObj.map(function(obj){
    return {
       aa: obj.a,
       bb: obj.b
    }
});

// transformed = [{aa:1, bb:2},{aa:4, bb:5}]

If you really want JSON you'd just call JSON.stringify(transformed)

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/map

这是另一个带有更复杂变换的答案How to make a jquery Datatable array out of standard json?

答案 1 :(得分:1)

从我在主页上可以看出,JSONT项目是关于将JSON转换为完全不同的格式(即JSON => HTML)。

编写自己的映射代码会更简单,可能只是作为您正在创建的对象的from_json()方法(因此YourSpecialObject.from_json(input);返回从该对象生成的对象的实例JSON数据)。

从您的问题来看,我不确定这是否适合您的使用案例,但希望其他人能尽快得到更好的答案。

答案 2 :(得分:1)

另一种选择是使用XSLT。由于有JX的SAX读者和编写者,您可以愉快地使用XSLT和JSON编写。 XML没有可怕的JSON,需要继续进行后向转换。请参阅:http://www.gerixsoft.com/blog/json/xslt4json

我绝对可以看到使用基于XML的语言转换JSON的讽刺意味 - 但它似乎是一个不错的选择。

否则你可能最好编写自己的映射代码。