最近分析學習一個JAVA的開源專案原始碼,但卡在高德JSON的決議這塊,不是出錯就是得到空字串,特來此請教各位朋友,看我的代碼要怎么改,謝謝。JSON內容為:
{
"status": "1",
"regeocode": {
"addressComponent": {
"city": "武漢市",
"province": "湖北省",
"adcode": "420106",
"district": "武昌區",
"towncode": "420106006000",
"streetNumber": {
"number": "46號",
"location": "114.300143,30.5515561",
"direction": "東北",
"distance": "32.3008",
"street": "青石橋"
},
"country": "中國",
"township": "中華路街街道",
"businessAreas": [
{
"location": "114.300581,30.547575",
"name": "司門口",
"id": "420106"
},
{
"location": "114.305741,30.583179",
"name": "江灘",
"id": "420102"
},
{
"location": "114.31082,30.560542",
"name": "積玉橋",
"id": "420106"
}
],
"building": {
"name": [
],
"type": [
]
},
"neighborhood": {
"name": [
],
"type": [
]
},
"citycode": "027"
},
"formatted_address": "湖北省武漢市武昌區中華路街街道銀聚園小區南區武昌廉政文化公園"
},
"info": "OK",
"infocode": "10000"
}我寫的JAVA函式為:
public Address parseAddress(JsonObject json) {
if(json.getString("status").equals("1")) {
JsonObject regecode = json.getJsonObject("regeocode");
if (regecode != null) {
Address address = new Address();
if (regecode.containsKey("formatted_address")) {
JsonArray format_address = json.getJsonObject("regeocode").getJsonArray("formatted_address");
address.setFormattedAddress(format_address.toString());
}
JsonObject result = regecode.getJsonObject("addressComponent");
if (result != null) {
if (result.containsKey("adcode"))
address.setPostcode(result.getJsonArray("adcode").toString());
if (result.containsKey("city"))
address.setSettlement(result.getJsonArray("city").toString());
if (result.containsKey("province"))
address.setState(result.getJsonArray("province").toString());
if (result.containsKey("district"))
address.setDistrict(result.getJsonArray("district").toString());
if (result.containsKey("county"))
address.setCountry(result.getJsonArray("county").toString());
JsonObject location = result.getJsonObject("streetNumber");
if (location != null) {
if (location.containsKey("street"))
address.setStreet(location.getJsonArray("street").toString());
if (location.containsKey("number"))
address.setHouse(location.getJsonArray("number").toString());
}
return address;
}
}
}
return null;
}
麻煩朋友們幫我改錯,謝謝。
uj5u.com熱心網友回復:
emmmmmm,第三方的JSON決議類不香嗎~?uj5u.com熱心網友回復:
public class GaoDeStruct {private String status;
private String info;
private String infocode;
private Regeocode regeocode;
//getter自己補充
//setter自己補充
public static void main(String[] args) {
String json = "你的json字串";
AddressComponent address = parse(json);
//對比一下列印出來的資訊如果在你本來的json字串一樣就表示正確了
System.out.println(JSONObject.toJSONString(address));
}
public static AddressComponent parse(String json) {
GaoDeStruct struct = JSONObject.parseObject(json, GaoDeStruct.class);
return struct.getRegeocode().getAddressComponent();
}
}
class Regeocode {
private AddressComponent addressComponent;
private String formatted_address;
//getter自己補充
//setter自己補充
}
class AddressComponent {
private String city;
private String province;
private String adcode;
private String district;
private String towncode;
private StreetNumber streetNumber;
private String country;
private String township;
private List<BusinessArea> businessAreas;
private Building building;
private Neighborhood neighborhood;
private String citycode;
//getter自己補充
//setter自己補充
}
class StreetNumber {
private String number;
private String location;
private String direction;
private String distance;
private String street;
//getter自己補充
//setter自己補充
}
class BusinessArea {
private String location;
private String name;
private String id;
//getter自己補充
//setter自己補充
}
class Building {
private List<String> name;
private List<String> type;
//getter自己補充
//setter自己補充
}
class Neighborhood {
private List<String> name;
private List<String> type;
//getter自己補充
//setter自己補充
}
真的不明白為什么現在搞json的怎么這么喜歡通過jsonObject.get(屬性名)這樣的方式來解釋json字串,json跟類本來就是可以相互轉化的,把json字串想要表達的類撰寫出來,不就可以了嗎?
uj5u.com熱心網友回復:
@monk294 各種各樣的功能庫確實很多,存在即合理吧。 這是一個持續了很多年的開源系統,使用的 javax.json.JsonArray, javax.json.JsonObject。我是因為這個系統,才剛開始接觸JAVA,在家宅了2個月,實在無聊,找點事打發時間。對大家來說這個可能很簡單,對我來說看的有點糊了,JsonArray、JsonObject不知道怎么解釋,望知道的朋友,就我給出的原始碼指出錯誤之處,謝謝。
uj5u.com熱心網友回復:
感謝分提到100分,全給第一個除錯通過的朋友,謝謝!轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/114702.html
標籤:Java SE
上一篇:多型應用
下一篇:新手求助!
