0

我可以从 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 对象)吗?我该怎么做?

(我听说有可能,但也许我不太了解说这话的人)。

4

2 回答 2

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 最常用于指代包含上述格式代码的字符串,即:

var json1_as_string = '{
   "mysex": "female",
   "yoursex": "male",
   "location": {
       "lat": "48",
       "lng": "1"
   },
   "description": "descr2",
   "owner": "zBYnfuu8DXEwMttwZ",
   "nickname": "user",
   "_id": "1"
}';

要从这样的字符串到实际的 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

ps

这两个非常不同的对象具有相同的“_id”似乎很奇怪。

于 2013-05-05T07:56:47.463 回答
0

你已经完全改变了这个问题,我试图理解你在问什么。

这两个 JSON 对象是不同的。我可以在事先不知道它的属性的情况下创建一个对象(对于所有其他 JSON 对象)吗?我该怎么做?

是的,在 Javascript 中,您可以在事先不知道其属性的情况下创建对象。Javascript 不是强类型的,也没有类。因此,拥有具有不同属性的对象绝对没有问题。

于 2013-05-05T09:10:50.720 回答