Java 如何反序列化映射<;字符串,对象>;与格森
我对GSON相当陌生,并得到了这种格式的JSON响应(只是一个简单的示例,所以这些值没有意义): 我想让格森把它做成一张地图,PersonData显然是一个物体。名称字符串是PersonData的标识符 正如我所说的,我对GSON非常陌生,只尝试过以下方式:Java 如何反序列化映射<;字符串,对象>;与格森,java,serialization,gson,Java,Serialization,Gson,我对GSON相当陌生,并得到了这种格式的JSON响应(只是一个简单的示例,所以这些值没有意义): 我想让格森把它做成一张地图,PersonData显然是一个物体。名称字符串是PersonData的标识符 正如我所说的,我对GSON非常陌生,只尝试过以下方式: Gson gson = new Gson(); Map<String, PersonData> decoded = gson.fromJson(jsonString, new TypeToken<Map<String
Gson gson = new Gson();
Map<String, PersonData> decoded = gson.fromJson(jsonString, new TypeToken<Map<String, PersonData>>(){}.getType());
非常感谢您的帮助:)以下内容适合我
static class PersonData {
int age;
String surname;
public String toString() {
return "[age = " + age + ", surname = " + surname + "]";
}
}
public static void main(String[] args) {
String json = "{\"Thomas\": {\"age\": 32,\"surname\": \"Scott\"},\"Andy\": {\"age\": 25,\"surname\": \"Miller\"}}";
System.out.println(json);
Gson gson = new Gson();
Map<String, PersonData> decoded = gson.fromJson(json, new TypeToken<Map<String, PersonData>>(){}.getType());
System.out.println(decoded);
}
因此,您的
PersonData
类可能非常不同。您可以使用gson.toJsonTree(对象o)
将自定义对象转换为JSON格式
以下是我的作品:
private static class PersonData {
private int age;
private String surname;
public PersonData(int age, String surname) {
this.age = age;
this.surname = surname;
}
}
public static void main(String[] args) {
PersonData first = new PersonData(24, "Yovkov");
PersonData second = new PersonData(25, "Vitanov");
Gson gson = new Gson();
JsonObject jsonObject = new JsonObject();
jsonObject.add("kocko", gson.toJsonTree(first));
jsonObject.add("deyan", gson.toJsonTree(second));
System.out.println(gson.toJson(jsonObject));
}
和打印:
{"kocko":{"age":24,"surname":"Yovkov"},"deyan":{"age":25,"surname":"Vitanov"}}
您的Json无效。在“Andy”之前需要一个逗号对不起,JSON绝对有效。我只是缩短了JSON,然后忘记了。更多的是关于GSON部分,关于如何将其解释为键值,其中value是GSON要序列化的对象。好的,我有另一个问题,很抱歉打扰了您的时间。我的课程类型中有一个错误,我甚至没有在这里发布,但您确认GSON部分工作帮助我认识到应该在哪里查看。谢谢@卢克森,不客气
Gson
的错误语句通常非常好。BEGIN\u数组
,BEGIN\u对象
,数字
和字符串
将指示Gson解析器实际读取的内容,而不是预期的内容。
{"Thomas": {"age": 32,"surname": "Scott"},"Andy": {"age": 25,"surname": "Miller"}}
{Thomas=[age = 32, surname = Scott], Andy=[age = 25, surname = Miller]}
private static class PersonData {
private int age;
private String surname;
public PersonData(int age, String surname) {
this.age = age;
this.surname = surname;
}
}
public static void main(String[] args) {
PersonData first = new PersonData(24, "Yovkov");
PersonData second = new PersonData(25, "Vitanov");
Gson gson = new Gson();
JsonObject jsonObject = new JsonObject();
jsonObject.add("kocko", gson.toJsonTree(first));
jsonObject.add("deyan", gson.toJsonTree(second));
System.out.println(gson.toJson(jsonObject));
}
{"kocko":{"age":24,"surname":"Yovkov"},"deyan":{"age":25,"surname":"Vitanov"}}