我正试图从我收录的JSON片段中获取“名称”。我尝试过以下但是我期待的东西永远不会被抓住。
编辑:'output'是完整的JSON字符串,以防它尚未被理解;)
JSONObject result = null;
JSONArray data = null;
try {
try {result = new JSONObject(output);} catch (JSONException e) {e.printStackTrace();}
try {
data = result.getJSONArray("data");
for(int a=0;a<data.length();a++){
System.out.println(result.getJSONObject(String.valueOf(a)).getString("name"));//getJSONObject("results")
}
以下是我正在尝试使用的JSON代码段:
{
"code": 200,
"status": "Ok",
"copyright": "© 2015 MARVEL",
"attributionText": "Data provided by Marvel. © 2015 MARVEL",
"attributionHTML": "<a href=\"http://marvel.com\">Data provided by Marvel. © 2015 MARVEL</a>",
"etag": "b130a8b7af591e4e7ca078753f9c5c8a76e55e5d",
"data": {
"offset": 0,
"limit": 20,
"total": 1485,
"count": 20,
"results": [
{
"id": 1011334,
"name": "3-D Man",
"description": "",
"modified": "2014
.
.
.
.
.
.
.
.
.
.
答案 0 :(得分:2)
为了让您入门,&#34;数据&#34;指向JSON对象,而不是数组。所以它应该是:
data = result.getJSONObject("data");
然后,&#34;结果&#34;指向JSON数组:
JSONArray results = data.getJSONArray("results");
然后你可以试试你的循环。你不应该将a
变成一个字符串 - getJSONObject()为索引取int
。
如果您在对象和数组之间混淆,JSON对象具有键 - 值对,并用大括号括起来。键是字符串,值可以是任何类型的混合:
{"key1": 5, "key2": "value2", "key3": {
"anotherObject": [1,2,3,4]
}
}
数组是一个对象列表,用方括号括起来:
[{...}, {...}, {...}]
列表中的元素不一定是JSON对象,而且在好的JSON中它们都是相同的类型:
[1,2,3,4,4]
或["we", "are", "in", "an", "array"]
答案 1 :(得分:0)
JSONTokener jsonTokener = new JSONTokener(jsonVaule);
JSONObject jsonObject = (JSONObject) jsonTokener.nextValue();
Int code =jsonObject.getInt("code");
String status =jsonObject.getString("status");
//{obejcet,obejcet,...}
for data{} is the same way~
JSONObject dataJsObject = (JSONObject) jsonObject.getJsonObject("data");
int offset =dataJsObject.getInt(""iffset);
....
//[{},{}] this type is jsonArrary
JSONArray results = dataJsObject.getJSONArray("results");
for(JSONObject resultJsonObj:JSONArray){
Int id =jsonObject.getInt("id");
//...and so on
}
希望它可以帮到你〜
答案 2 :(得分:0)
您可以像那样解析
JsonObject obj = new JsonObject(StringResponse);
String code = obj.getString(code);
//same way you can get other string
JsonObject obj1 = obj.getJsonObject(Data);
String offset= obj.getString(offset);
//same way you can get other string
JsonArray jsonarr = obj1.getJsonArray(results);
for(i=0;i< jsonarr.size(); i++){
JsonObject innerObj = jsorr.getJsonObject(i);
String id= obj.getString(id);
//same way you can get other string
}
希望它对你有所帮助