2017-08-08 40 views
-2

这里的JSON:JSON解析嵌套或以其他方式有点比单值更复杂,当

{ 
    "firstName": "John", 
    "lastName": "doe", 
    "age": 26, 
    "address": { 
     "streetAddress": "123 Main street", 
     "city": "Anytown", 
     "postalCode": "12345" 
    }, 
    "phoneNumbers": [ 
     { 
      "type": "iPhone", 
      "number": "123-456-8888" 
     }, 
     { 
      "type": "home", 
      "number": "123-557-8910" 
     } 
    ] 
} 

的问题是,在Java中,你如何访问地址字段?我尝试之类的东西address.city,但没有奏效:

String city = (String) jsonObject.get("address.streetAddress"); 
System.out.println(city); 

将不胜感激的任何建议。

回答

0

您需要致电address对象上的getString

String city = jsonObject.getJSONObject("address").getString("streetAddress"); 
0
{ 
    "firstName": "John", 
    "lastName": "doe", 
    "age": 26, 
    "address": { 
     "streetAddress": "123 Main street", 
     "city": "Anytown", 
     "postalCode": "12345" 
    }, 
    "phoneNumbers": [ 
     { 
      "type": "iPhone", 
      "number": "123-456-8888" 
     }, 
     { 
      "type": "home", 
      "number": "123-557-8910" 
     } 
    ] 
} 

先取得你address.Address是一个对象。{}表示对象,[]指的阵列。

JSONObject addressObj = jsonObject.get("address"); 

现在你有一个参考地址。

String addressStr = addressObj.get("streetAddress"); 
String cityStr = addressObj.get("city"); 
int cityInt = Integer.parseInt(addressObj.get("postalCode")); 

,如果我没有错记得应该的getString(“的StreetAddress”)和getInteger(“邮编”),以避免解析问题。

0

除了给出的答案,你应该添加一个检查,看看地址是否在检查城市之前是不是空白,否则你将最终得到和例外。 此处更新示例:

if(jsonObject.has("address"){ 
    JSONObject addressObj = jsonObject.get("address"); 

    if(addressObj.has("city"){ 
     String cityStr = addressObj.get("city"); 
    } 
}