我正在构建一个应用程序,其中从第三方系统检索数据作为JSON字符串。我需要将此JSON字符串转换为另一个具有不同结构的JSON字符串,以便它可以与内部Javascript库中定义的预先存在的函数一起使用。
理想情况下,我希望能够使用Javascript在客户端计算机上执行此转换。
我已将JSONT视为实现此目标的一种方法,但该项目似乎没有得到积极维护:
http://goessner.net/articles/jsont/
是否有实现这一目标的事实上的方法?或者我是否必须滚动自己的映射代码?
答案 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的讽刺意味 - 但它似乎是一个不错的选择。
否则你可能最好编写自己的映射代码。