我正在尝试使用改造2来获取json响应。我的json响应看起来像这样:
[
0 : {
type : "video",
format : "mp4",
size : "10mb"
},
1 : {
type : "audio",
format : "mp3",
size : "10mb"
},
2 : {
type : "text",
format : "pdf",
size : "10mb"
}
]
我的模特课怎么样?我无法理解,因为它有动态密钥。
答案 0 :(得分:5)
这不是一个有效的Json,因为你可以在https://jsonlint.com/上尝试,你可以将你的回复更改为:
<router-outlet>
答案 1 :(得分:3)
首先,这是无效/不完整的JSON。有效版本看起来像这样
{
"items": [
{
"0": {
"type": "video",
"format": "mp4",
"size": "10mb"
}
},
{
"1": {
"type": "audio",
"format": "mp3",
"size": "10mb"
}
},
{
"2": {
"type": "text",
"format": "pdf",
"size": "10mb"
}
}
]
}
它可以安全地反序列化到这个
class Item{
String type;
String format;
String size;
}
class Response{
List<Map<Integer,Item>> items;
}
//....
Response response = new Gson().fromJson(yourJson, Response.class);
作为替代解决方案,我确信您无法更改JSON格式,请将JSON字符串中的[]更改为{}并将其反序列化为
Map fieldMap = (Map)new Gson().fromJson(json, Map.class);
它应该为您提供所有数据的LinkedTreeMap
答案 2 :(得分:2)
所以,正如人们已经说过的,如果你改变你的json是有效的:
[
{
"type":"video",
"format":"mp4",
"size":"10mb"
},
{
"type":"audio",
"format":"mp3",
"size":"10mb"
},
{
"type":"text",
"format":"pdf",
"size":"10mb"
}
]
然后你可以创建你的类,例如:
public class Test {
public String type;
public String format;
public String size;
}
然后,与Gson:
Type testType = new TypeToken<ArrayList<Test>>(){}.getType();
ArrayList<Test> list = new Gson().fromJson(json, testType);
另一方面,通过retrofit2,您可以让https://dcos.io/docs/1.9/administering-clusters/update-a-node/为您完成工作。