我有一个 Json 波纹管:
{
"0001":[111, "BLABLA", "LALA", "KKK",80,20],
"002":[222, "BLABLA", "LALA", "KKK",80,40],
"003":[333, "BLABLA", "LALA", "KKK",100,20],
"000":[444, "BLABLA", "LALA", "KKK",800,60],
"555":[555, "BLABLA", "LALA", "KKK",80,20,
"100":[48, "BLABLA", "LALA", "KKK",80,20]
}
我在 Gson 反序列化时遇到问题。我知道使用变量名称定义如下的 Json:
{
"item":"001":["id":1,"description":"bla bla"],
"item":"002":["id":2,"description":"bla bla"]
}
然后我使用与 json 相同的变量名定义类并执行解析
public class DataClass
{
String item;
int id;
String description;
getters and setters;
}
gson.fromJson (json, DataClass.class);
但我不知道如何执行此操作,以防我需要使用不带变量名的 json(在帖子开头)。有人可以帮忙吗?
最佳答案
本类(class)回答您的问题:
package stackoverflow.questions.q18116805;
import java.lang.reflect.Type;
import java.util.*;
import com.google.common.reflect.TypeToken;
import com.google.gson.Gson;
public class Q18116805 {
public static void main(String[] args) {
String json =
"{ \"0001\":[111, \"BLABLA\", \"LALA\", \"KKK\",80,20], "+
" \"002\":[222, \"BLABLA\", \"LALA\", \"KKK\",80,40], "+
" \"003\":[333, \"BLABLA\", \"LALA\", \"KKK\",100,20], "+
" \"000\":[444, \"BLABLA\", \"LALA\", \"KKK\",800,60], "+
" \"555\":[555, \"BLABLA\", \"LALA\", \"KKK\",80,20], "+
" \"100\":[48, \"BLABLA\", \"LALA\", \"KKK\",80,20]}";
Type aType = new TypeToken<Map<String,ArrayList<Object>>>() {}.getType();
Map<String,ArrayList<Object>> map = new Gson().fromJson(json, aType);
System.out.println(map);
}
}
这是结果:
{0001=[111.0, BLABLA, LALA, KKK, 80.0, 20.0], 002=[222.0, BLABLA, LALA, KKK, 80.0, 40.0], 003=[333.0, BLABLA, LALA, KKK, 100.0, 20.0], 000=[444.0, BLABLA, LALA, KKK, 800.0, 60.0], 555=[555.0, BLABLA, LALA, KKK, 80.0, 20.0], 100=[48.0, BLABLA, LALA, KKK, 80.0, 20.0]}
关于java - 当 JSON 没有变量名时使用 gson 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18116805/