[英]Return Type for JsonArray from Action to JSP having multiple JSONArray Objects?
[英]Getting JSONArray embedded inside multiple objects/arrays
我從服務器返回了JSON響應,我需要抓取的數組是嵌入在多個對象和數組內部的值。 我需要獲取formatIds JSONArray。 我的JSON看起來像這樣:
{
"entries": [
{
"title": "sample",
"targets": [
{
"format": "wav",`enter code here`
"description": "A wav file",
"formatCriteria": [
{
"formatSelectionTitle": "Find WAV files",
"formatSteps": {
"UniqueId": "214212312321",
"formatMatches": {
"formatIds": [
"WAV",
"MP3"
]
}
}
}
]
}
]
}
]
}
我唯一能弄清楚的方法就是要有一堆嵌入式的for循環:
String[] assetUri;
for (int i = 0; i < entriesArray.length(); i++) {
entryJsonOjbect = entriesArray.getJSONObject(i);
fileTargetArray = tempObj.getJSONArray("targets");
//Loop through the targets array
for (int j = 0; j < fileTargetArray.length(); j++) {
tempObj = fileTargetArray.getJSONObject(j);
fileCriteriaArray = tempObj.getJSONArray("formatCriteria");
//Loop through fileCriteria Array
for (int h = 0; h < fileCriteriaArray.length(); h++) {
JSONObject fileCriteriaObj = fileCriteriaArray.getJSONObject(h);
//Get the JSON Object 'formatSteps'
JSONObject selectStepObj = fileCriteriaObj.getJSONObject("formatSteps");
//Get the JSON Object 'formatMatches'
JSONObject selectionMatches = selectStepObj.getJSONObject("formatMatches");
//FINALLY. Get the formatIds ARray
JSONArray assetTypeArray = selectionMatches.getJSONArray("formatIds");
//Assign the values from the JSONArray to my class
assetUri = new String[assetTypeArray.length()];
for (int z = 0; z < assetTypeArray.length(); z++) {
assetUri[z] = assetTypeArray.getString(z);
}
}
}
}
由於所有嵌入式循環,此代碼的確會使x20的運行速度變慢。 有沒有一種方法可以讓我獲取此JSONArray而不需要這些額外的代碼? 在jQuery中有一個JSON.find ,想知道在Java中是否有類似的東西? 我已經嘗試過JSON API調用getJSONArray並獲取根jsonObject,但是除非您位於存在json數組的對象中,否則它不起作用。 我確定我可以執行某種類型的遞歸解決方案,但這仍然很煩人。 有什么建議嗎??
使用org.json
-library解析JSON就像使用DOM解析XML: org.json
。 但是:您將需要所有這些循環。
如果您的JSON響應始終看起來像您發布的JSON響應(每個數組中的單個元素),那么您的JSON效果很差。 如果只需要“第一個”條目,請不要在數組上循環。
用org.json
解析如此復雜的數據結構可能很痛苦。 您是否嘗試過(更為自動化的) google-gson庫? 查看示例 。 盡管我不想說用gson進行解析在CPU時間方面會更快,但在開發時間方面卻會更快。
我最近也剛剛寫了一篇有關該主題的博客文章: JSON和Java
您可以使用GSON之類的庫為您解析為Java對象,而無需手動進行超越和循環。
http://java.sg/parsing-a-json-string-into-an-object-with-gson-easily/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.