Java 在嵌套或其他情况下解析JSON比单个值更复杂
以下是JSON:Java 在嵌套或其他情况下解析JSON比单个值更复杂,java,json,Java,Json,以下是JSON: { "firstName": "John", "lastName": "doe", "age": 26, "address": { "streetAddress": "123 Main street", "city": "Anytown", "postalCode": "12345" }, "phoneNumbers": [ { "type":
{
"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);
如果您有任何建议,我们将不胜感激。您需要对您得到的address对象调用getString
String city = jsonObject.getJSONObject("address").getString("streetAddress");
首先获取您的地址。地址是一个对象。{}表示对象,[]表示数组
JSONObject addressObj = jsonObject.get("address");
现在您有了地址的引用
String addressStr = addressObj.get("streetAddress");
String cityStr = addressObj.get("city");
int cityInt = Integer.parseInt(addressObj.get("postalCode"));
如果我没有记错的话,应该有getStringstreetAddress和getIntegerpostalCode来避免解析问题。除了给出的答案之外,在检查city之前,您应该添加一个检查,看看地址是否为空,否则您将得到一个异常。 以下是更新的示例:
if( jsonObject.has("address"){
JSONObject addressObj = jsonObject.get("address");
if( addressObj.has("city"){
String cityStr = addressObj.get("city");
}
}
if( jsonObject.has("address"){
JSONObject addressObj = jsonObject.get("address");
if( addressObj.has("city"){
String cityStr = addressObj.get("city");
}
}