2

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

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

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

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

有没有事实上的方法来实现这一目标?还是我必须推出自己的映射代码?

4

3 回答 3

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

这是另一个更复杂转换的答案如何用标准 json 制作 jquery Datatable 数组?

于 2013-01-12T01:07:07.480 回答
1

另一种选择是使用 XSLT。由于 JSON 有 SAX 读取器和写入器,因此您可以愉快地使用带有 JSON 的 XSLT 编写。没有可怕的 JSON 到 XML 并且需要继续进行反向转换。见:http ://www.gerixsoft.com/blog/json/xslt4json

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

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

于 2013-01-12T01:15:23.743 回答
1

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

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

根据您的问题,我不确定这是否适合您的用例,但希望其他人很快会有更好的答案。

于 2013-01-12T01:06:31.703 回答