基本上,即時從包含名爲「引用」的字符串數組的服務器的服務器獲取JSON響應。如果沒有找到之前的參考或者以前的參考填充,它可以是空的。如何從Java中的JSON字符串填充字符串數組
這是我從服務器得到的響應。
{"code":100,
"name":"3PVxkvfKyUiBg3LN24ek23KceGg6350KSkLZ.html",
"file":{
"author":"[email protected]",
"idx":"xihav-zupak-zonyf-bedid-cyvun-fahac-mykud",
"name":"html_file",
"references":[
"relec-toluz",
"rosah-vyzyh",
"rikik-cinom"
]
}
}
我在這個時刻做的不是很好,我第一次解析引用的內容,以確定然後創建新的String數組的引用數,並把每個值在裏面。不過,我想知道是否有任何適當的方式來做到這一點。
這是我寫的代碼,這是不是一個真正的好的一段代碼:
if(file.has("references")){
String s = file.get("references").toString();
int counter =0;
//determine the amount of elements (check if the references does not finish with ','
if(s.length() > 2 && s.charAt(s.length()-2) != ','){
counter++;
System.out.println(s);
for(int i=0 ; i < s.length(); i++){ if(s.charAt(i) == ',') counter++;}
}else {
counter++;
for(int i = 0; i < s.length() -2; i++){ if(s.charAt(i) == ',') counter++;}
}
JsonArray referencesList = new Gson().fromJson(s, JsonArray.class);
if(s != null && s.length()>2 && counter !=0){
System.out.println("1");
references = new String[counter];
for(int i = 0 ; i < references.length ; i++){ references[i] = referencesList.get(i).getAsString();}
}else references = new String[]{"No previous references found"};
}
的代碼工作得很好了我的需要,但沒有任何其他辦法可以做到更「正確」?
你沒有使用'JSONParser'任何理由嗎?檢查出:https://stackoverflow.com/questions/43724937/how-to-parse-json-string-to-java-object-with-jackson – yogidilip
@yogidilip以及我一直在使用Google的GSON爲我的整個項目,因爲我發現它更易於使用。這就是爲什麼。 – retArdos
那麼你絕對應該考慮使用Gson的'JsonParser'。將解析留給Gson,只處理生成的'JsonElement'。 – Ishnark