2017-09-13 180 views
-2

这里是一个对象:如何访问此对象的深层嵌套属性?

{ 
    "@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 
        } 
} 
+0

开始于任何JavaScript对象,您已经将JSON解析为.. –

+0

然后什么?????? –

+0

你是怎么“用JavaScript来解析它的?” – Rafael

回答

1

访问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

+0

请注意,此答案中没有JSON,只是嵌套的对象/数组。 – nnnnnn

+0

好吧,我的错误。编辑我的答案,谢谢你指出。 –

相关问题