【问题标题】:How to convert JSON object back to `Person` object java如何将 JSON 对象转换回 `Person` 对象 java
【发布时间】:2022-11-17 03:43:59
【问题描述】:

我想将 JSON 对象转换回 Person 对象 java,但出现以下错误 java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at path $

示例 Json 文件:

{
  "type":"set",
  "key":"person",
  "value":{
    "name":"Elon Musk",
    "car":{
      "model":"Tesla Roadster",
      "year":"2018"
    },
    "rocket":{
      "name":"Falcon 9",
      "launches":"87"
    }
  }
}
JsonObject jsonObject = new JsonParser().parse(input.readUTF()).getAsJsonObject();

Gson gson = new Gson();

for (Map.Entry<String, JsonElement> entry : jsonObject.entrySet()) {
Person person = gson.fromJson(entry.getValue(), Person.class);
System.out.println(jsonFile);
}
@Getter
@Setter
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Person  {
String type;
String key;
Value value;
}
@Data
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Getter
@ToString
public class Value  {
String name;
Map<String, String> car;
Map<String, String> rocket;
}

【问题讨论】:

  • 请添加有关您收到的错误的更多详细信息。在我看来,您的解析转换类有点错误,很难理解如果 entry.getValue() 对于地图中的第一个条目,值是多少,据我所知,它可以是 "type":"set"
  • 试试Person person = gson.fromJson(input.readUTF(), Person.class);。见https://www.baeldung.com/gson-deserialization-guide

标签: java json gson


【解决方案1】:

示例中的 jsonObject 表示 Person,因此您不必迭代 jsonObject.entrySet(),您必须使用 jsonObject 本身。

Person person = gson.fromJson(jsonObject, Person.class);

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多