Java 如何使用JSON解析Android无限数据
我使用的API提供了一个JSON输出。如何在android studio上解析它?我以前从未见过这样的JSON打印输出Java 如何使用JSON解析Android无限数据,java,android,json,parsing,arraylist,Java,Android,Json,Parsing,Arraylist,我使用的API提供了一个JSON输出。如何在android studio上解析它?我以前从未见过这样的JSON打印输出 { "market": { "100": { "name": "forexample", "surname": "forexample2" }, "101": { "name": "forexample3", "surname": "forexample4" }, . . .
{
"market": {
"100": {
"name": "forexample",
"surname": "forexample2"
},
"101": {
"name": "forexample3",
"surname": "forexample4"
},
.
.
.
"999": {
"name": "forexampleXX",
"surname": "forexampleXX"
}
}
}
“101”继续增加1。个人身份识别时间太长了。最近的路是什么
这就是从所需对象获取数据的方式
JSONObject json=new JSONObject();
json=response.getJSONObject(“市场”);
迭代器iter=json.keys()//在这里,您可以获得100101102…而无需单独访问
while(iter.hasNext()){
String key=iter.next();
试一试{
Object value=json.get(key);//这里是对象值
}捕获(JSONException e){
//出了点问题!
}
}
如果有什么不清楚的地方,请随时询问。您的“市场”JSON应该是JSONArray。显示您可以将内容与索引一起使用
更改API输出。像
{
"market": [
{
"name": "forexample",
"surname": "forexample2"
},
{
"name": "forexample3",
"surname": "forexample4"
},
.
.
.
{
"name": "forexampleXX",
"surname": "forexampleXX"
}
]
}
你可以用。
并将json转换为类似
HashMap<String,HashMap<String,Person>> map
for (String key: map.keySet()) {
HashMap < String, Person > personMap = map.get(key);
for (String personKey: personMap() {
Person person = map.get(personKey);
// do what you want with the person object
}
}
HashMap
本文可以帮助解析此类型-
Person将是一个有名字和姓氏的类。
首先获取第一级密钥。->keySet(),并为每个新hashmap获取下一级密钥。差不多
HashMap<String,HashMap<String,Person>> map
for (String key: map.keySet()) {
HashMap < String, Person > personMap = map.get(key);
for (String personKey: personMap() {
Person person = map.get(personKey);
// do what you want with the person object
}
}
for(字符串键:map.keySet()){
HashMappersonMap=map.get(key);
for(字符串personKey:personMap(){
Person=map.get(personKey);
//对person对象执行所需操作
}
}
您可以使用GSON图书馆,它是非常著名的图书馆
像这样添加它
implementation 'com.google.code.gson:gson:2.8.2'
HashMap<String,HashMap<String, User>> result = gson.fromJson( jsonString , new TypeToken<HashMap<String,HashMap<String, User>>>() {
}.getType());
然后你可以这样解析它
Market market = new Gson().fromJson( jsonString , Market.class);
市场等级将在哪里
public class Market {
public HashMap<Integer , User > result ;
}
或者你可以不用这样的类来解析它
implementation 'com.google.code.gson:gson:2.8.2'
HashMap<String,HashMap<String, User>> result = gson.fromJson( jsonString , new TypeToken<HashMap<String,HashMap<String, User>>>() {
}.getType());
HashMap result=gson.fromJson(jsonString,new-TypeToken()){
}.getType());
希望这将帮助您@Bill.发布完整的
JSON
。它有什么奇怪之处?它可能在object中复制了它的just对象将“market”JsonObject转换为JSONArray。这会变得更简单。“101”继续增加1。进行单独标识的时间太长。最短的方法是什么?@Bill shortest way是更改json响应并使其成为json数组。我应该如何定义“101”要创建json数组?@Bill,是的,一种方法是将您的响应更改为json数组,否则您需要按照模式指定具体的数字,即在您的情况下,它是从100-999,但请记住,如果您的响应在任何时候更改,它将崩溃。@Bill您不需要在数组中定义101,您可以使用位置访问数组抱歉,我无法更改API o输出。还有其他方法吗?你在改变输出方面面临什么问题?因为这是唯一有效的方法。