我正在尝试解析服务器的输出,如下所示:
{
"GetFolderFilesByZoneResult": [
{
"ID": 98748,
"CreatedBy": "",
"UpdatedBy": "none",
"CreatedDate": "\/Date(1308273033620+0100)\/",
"UpdatedDate": "\/Date(1308303003770+0100)\/",
"CommentCount": 0,
"Key": "",
"Enabled": true,
"MimeType": "video",
"Votes": 2,
"TotalRating": 0,
"AllowComments": true,
"ViewCount": 323,
"ReleaseDate": "\/Date(1308273000000+0100)\/",
"ExpireDate": "\/Date(4102444800000+0000)\/",
"Author": "",
"Size": 133799936,
"Tag1": "",
"Tag2": "",
"Tag3": "",
"RecycleBin": false
},
{
"ID": 99107,
"CreatedBy": "",
"UpdatedBy": "none",
"CreatedDate": "\/Date(1308583412520+0100)\/",
"UpdatedDate": "\/Date(1308583564007+0100)\/",
"CommentCount": 0,
"Key": "",
"Enabled": true,
"MimeType": "video",
"Votes": 0,
"TotalRating": 0,
"AllowComments": true,
"ViewCount": 33,
"ReleaseDate": "\/Date(1308583380000+0100)\/",
"ExpireDate": "\/Date(4102444800000+0000)\/",
"Author": "",
"Size": 47955968,
"Tag1": "",
"Tag2": "",
"Tag3": "",
"RecycleBin": false
}
]
}
我正在尝试使用Java org.json来解析它,但我对JSON / org.json没有任何经验,所以我遇到了一些麻烦。我怎么解析这个?
答案 0 :(得分:34)
1)假设你的路径上有JSON库(来自www.json.org),这很容易。
import org.json.JSONTokener;
...
URI uri = new URI("http://someserver/data.json");
JSONTokener tokener = new JSONTokener(uri.toURL().openStream());
JSONObject root = new JSONObject(tokener);
从那里,您可以解决JSON对象的各个部分。看看Javadocs的具体细节。 https://developer.android.com/reference/org/json/package-summary.html
答案 1 :(得分:7)
这是最通用的解决方案,它允许将任何JSON类型解析为适当的Java类型:
Object json = new JSONTokener(response).nextValue();
然后您可以确定结果类型并进行适当处理。
答案 2 :(得分:-2)
我会通过它
map<String, Object>
加载
map<String, Object>
在对象字段中。
基本上在大型地图中重新创建java类的层次结构。
示例:
return ( Map<"GetFolderFilesByZoneResult", Map<"Result1", (object by id 98748) | "Result2", (object by id 99107) | "Result3", etc.
JSON将返回非常相似的大地图,并且以编程方式更容易再进行列表。