JSON解析与org.json
我试图解析来自看起来像这样的服务器输出:我试图用Java org.json解析它JSON解析与org.json
{
"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
}
]
}
,但我不”没有任何JSON/org.json的经验,所以我遇到了一些麻烦。我如何解析这个?
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
因此,我在最后一行得到以下错误:线程“main”中的异常java.lang.RuntimeException:不可编译的源代码 - 错误的ctor sym类型:
您可以发布您遇到问题的代码吗? – JohnnyO
使用您发布的确切代码,唯一的区别是使用的网址 –
我将它传递
map<String, Object>
装载
map<String, Object>
在物场
。
基本上重新创建大型地图内的java类的层次结构。
例子:
return (Map<"GetFolderFilesByZoneResult", Map<"Result1", (object by id 98748) | "Result2", (object by id 99107) | "Result3", etc.
JSON将返回大地图很漂亮等,编程更容易做,然后列出。
我明白了,但是如何用org.json解析对象/数组/值?你能提供一些代码吗? –
它自动完成它。将它推入一个对象并对其进行解码。例如,在我的地图示例中,它将对象变量“字符串ID = 99107”字段解码为JSON作为“ID:99107”。 – TravMan
我认为这个问题恰恰相反,拿一个json的内容,并得到它的java对象的价值。 –
这里是最普遍的解决方案,它允许解析任何JSON类型到相应的Java类型:
Object json = new JSONTokener(response).nextValue();
然后你就可以决定所产生的类型并适当地处理它。
解析JSON输入中的数据后,您打算如何在Java代码中使用它?您是试图填充自定义Java数据结构,还是只想快速从JSON中检索一个或两个值并继续前进? –