如何访问此对象的深层嵌套属性?
这里是一个对象:如何访问此对象的深层嵌套属性?
{
"@odata.context":"http://company/api/data/v8.2/$metadata#EntityDefinitions(608861bc-50a4-4c5f-a02c-21fe1943e2cf)/Attributes/Microsoft.Dynamics.CRM.StateAttributeMetadata(LogicalName,OptionSet)","value":[
{
"LogicalName":"statecode","MetadataId":"cdc3895a-7539-41e9-966b-3f9ef805aefd","[email protected]":"http://vsevm.centralus.cloudapp.azure.com/Xypex/api/data/v8.2/$metadata#EntityDefinitions(608861bc-50a4-4c5f-a02c-21fe1943e2cf)/Attributes(cdc3895a-7539-41e9-966b-3f9ef805aefd)/Microsoft.Dynamics.CRM.StateAttributeMetadata/OptionSet/$entity","OptionSet":{
"MetadataId":"88fa5ad0-2a4b-4281-ac9c-b4e71fb77920","HasChanged":null,"Description":{
"LocalizedLabels":[
{
"Label":"Status of the contact.","LanguageCode":1033,"IsManaged":true,"MetadataId":"fc7cf5df-8503-46e3-85b2-6c0ac68bc912","HasChanged":null
}
],"UserLocalizedLabel":{
"Label":"Status of the contact.","LanguageCode":1033,"IsManaged":true,"MetadataId":"fc7cf5df-8503-46e3-85b2-6c0ac68bc912","HasChanged":null
}
},"DisplayName":{
"LocalizedLabels":[
{
"Label":"Status","LanguageCode":1033,"IsManaged":true,"MetadataId":"37c73b95-afd6-4d25-9ded-3691db6ce56b","HasChanged":null
}
],"UserLocalizedLabel":{
"Label":"Status","LanguageCode":1033,"IsManaged":true,"MetadataId":"37c73b95-afd6-4d25-9ded-3691db6ce56b","HasChanged":null
}
},"IsCustomOptionSet":false,"IsGlobal":false,"IsManaged":true,"IsCustomizable":{
"Value":true,"CanBeChanged":false,"ManagedPropertyLogicalName":"iscustomizable"
},"Name":"contact_statecode","OptionSetType":"State","IntroducedVersion":null,"Options":[
{
"@odata.type":"#Microsoft.Dynamics.CRM.StateOptionMetadata","Value":0,"Label":{
"LocalizedLabels":[
{
"Label":"Active","LanguageCode":1033,"IsManaged":true,"MetadataId":"4754c2fa-2241-db11-898a-0007e9e17ebd","HasChanged":null
}
],"UserLocalizedLabel":{
"Label":"Active","LanguageCode":1033,"IsManaged":true,"MetadataId":"4754c2fa-2241-db11-898a-0007e9e17ebd","HasChanged":null
}
},"Description":{
"LocalizedLabels":[
],"UserLocalizedLabel":null
},"Color":null,"IsManaged":true,"MetadataId":null,"HasChanged":null,"DefaultStatus":1,"InvariantName":"Active"
},{
"@odata.type":"#Microsoft.Dynamics.CRM.StateOptionMetadata","Value":1,"Label":{
"LocalizedLabels":[
{
"Label":"Inactive","LanguageCode":1033,"IsManaged":true,"MetadataId":"4954c2fa-2241-db11-898a-0007e9e17ebd","HasChanged":null
}
],"UserLocalizedLabel":{
"Label":"Inactive","LanguageCode":1033,"IsManaged":true,"MetadataId":"4954c2fa-2241-db11-898a-0007e9e17ebd","HasChanged":null
}
},"Description":{
"LocalizedLabels":[
],"UserLocalizedLabel":null
},"Color":null,"IsManaged":true,"MetadataId":null,"HasChanged":null,"DefaultStatus":2,"InvariantName":"Inactive"
}
]
}
}
]
}
我访问使用JavaScript这个对象。 Id喜欢访问此LocalizedLabel中的“标签”的值。
"Label":{
"LocalizedLabels":[
{
"Label":"Active","LanguageCode":1033,"IsManaged":true,"MetadataId":"4754c2fa-
2241-db11-898a-0007e9e17ebd","HasChanged":null
}
}
访问Javascript对象中的不同图层是非常直接的,一旦你得到了把戏。基本上,当你想要更深入一个对象时,你使用“。”来表示。其次是密钥名称。 例如:
object = {"key1": { "key2": "some value"}}
value = object.key1.key2 //returns "some value"
这将返回与该密钥关联的值。如果该值是另一个对象,则可以迭代该过程。如果该值是一个数组,那么就像在任何其他数组上一样操作它。
再加上通常数组访问技术:
object = {"key1":
{ "key2":
[
{"key3": "some value"},
{"key3": "another value"}
]
}}
list = object.key1.key2 // returns "[ {"key3": "some value"},{"key3": "another attribute"}]"
listElement = object.key1.key2[0] // return "{"key3": "some value"}"
value = object.key1.key2[0].key3 // returns "some value"
otherValue = object.key1.key2[1].key3 // returns "another value"
等
编辑:正如在下面的评论指出,JSON是一个简单的格式化,本身不是一个数据类型。你想知道的是这里是如何操作javascript对象和数组。 (换句话说,JSON是一种将对象和/或数组作为字符串的语法方式正确的javascript,有关更多详细信息,请参阅here)
请注意,此答案中没有JSON,只是嵌套的对象/数组。 – nnnnnn
好吧,我的错误。编辑我的答案,谢谢你指出。 –
开始于任何JavaScript对象,您已经将JSON解析为.. –
然后什么?????? –
你是怎么“用JavaScript来解析它的?” – Rafael