我通过JavaScript中的XMLHttpRequest
从Web服务器加载JSON文件。此模块或JSON.parse
方法返回JSON Object
(常规JavaScript对象,我称之为w3schools的JSON对象。)
加载的JSON数据:
{
"MyName":"Kiwi",
"MyNum" : "42",
"MyList" : {
"$type" :"Bla",
"$values: [ ]
}
};
我可以传递已解析的对象并像常规JavaScript对象一样访问它的属性。但是,我想知道在源代码中实际声明对象的属性是否有意义,例如:
// MyObject.js
function MyObject() {
this.myName = "Kiwi";
this.myNum = 42;
this.myList = []
}
基本上,将我解析的JSON对象中的每个属性映射到源代码中声明的JavaScript对象(以及其他转换):
var myObj = new MyObject();
myObj.myName = jsonObject.MyName;
myObj.myNum = jsonObject.MyNum;
我认为这有以下好处:
我使用JSON.NET等序列化程序将我的方法与使用C#等语言解析JSON的方法进行比较。
这在JavaScript世界中也是常见做法,还是应该坚持使用JSON.parse方法返回的JSON对象?
更多信息:
我的特殊用例是JSON数据的处理,其中包括许多元字段(由诸如" $ type"或" $ values"等名称表示,以表示数组)。这些文件是由JSON.NET创建并序列化C#对象,我基本上在我的JavaScript应用程序中镜像。因此,我可能想要重新声明与原始C#类声明方式更相似的属性。主要是这会将myObject.aList.$values[0]
之类的调用转换为myObject.aList[0]
。
答案 0 :(得分:2)
如果您需要的不仅仅是JSON提供的数据类型,您可以自行滚动以处理JSON.parse
吐出的项目,或使用多个库like this one
大多数人的用例很简单,他们不需要一个支持更多“丰富”数据存储的库,JSON就可以了。
如果您提前知道数据结构,并且需要将JSON日期(存储为字符串)转换为Javascript日期,则最好在加载JSON时转换它。如果您有复杂的需求需要加载您无法提前预测的复杂数据类型,请使用像Transit.js这样的库