我可以从JSON动态创建对象吗?
这是阵列中的一部分:
values: [{
"$type": "Entrance, DataModel",
"EntranceDeviceData": {
"$type": "DeviceData, DataModel",
"Watchdog": 0,
"Inputs": {
"$type": "Int16[], mscorlib",
"$values": [0, 0]
},
"Outputs": {
"$type": "Int16[], mscorlib",
"$values": [0, 0]
},
"Faults": {
"$type": "Int16[], mscorlib",
"$values": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
},
"StandingCommand": 0
},
"Vehicle": null,
"NextStates": {
"$type": "System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib",
"$values": ["CarApproachingBarrier"]
},
"Repository": {
"$type": "System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[System.Object, mscorlib]], mscorlib"
},
"Direction": 0,
"Name": "Entrance",
"Position": "0,0,0,0",
}, {...another object...
}, {...another one...
}
]
这两个JSON对象都不同。我可以在不事先知道它的属性的情况下创建一个对象(对于每个其他JSON对象)吗?我该怎么办?
(我听到了一些可能的事情,但也许我不太了解那个说过的人。)
答案 0 :(得分:0)
您在上面原始代码中提供的JSON示例是Javascript定义文字对象的方式。 json1和json2已经是javascript对象,不需要创建它们。
// original code from question
var json1 = {
"mysex": "female",
"yoursex": "male",
"location": {
"lat": "48",
"lng": "1"
},
"description": "descr2",
"owner": "zBYnfuu8DXEwMttwZ",
"nickname": "user",
"_id": "1"
};
正如nnnnnn在下面指出的那样,JSON最常用于引用包含如上格式化的代码的STRING,它将是:
var json1_as_string = '{
"mysex": "female",
"yoursex": "male",
"location": {
"lat": "48",
"lng": "1"
},
"description": "descr2",
"owner": "zBYnfuu8DXEwMttwZ",
"nickname": "user",
"_id": "1"
}';
要从这样的String获取到实际的Javascript对象,您需要解析它:
var json1 = JSON.parse(json1_as_string);
相反的方向(Javascript Object to String)由stringify实现:
var json1_as_string = JSON.stringify(json1);
请参阅https://developer.mozilla.org/en-US/docs/Using_native_JSON
P.S。
这两个非常不同的对象具有相同的“_id”似乎很奇怪。
答案 1 :(得分:0)
你完全改变了这个问题,我正在努力理解你在问什么。
这两个JSON对象都不同。我可以创建一个对象(for 每个其他JSON对象)事先不知道它的属性? 我该怎么办?
是的,在Javascript中,您可以在不事先了解其属性的情况下创建对象。 Javascript没有强类型,也没有类。所以绝对没有问题 拥有不同属性的对象。