如何将以下 json 字符串转换为 java 对象?

新手上路,请多包涵

我想将以下 JSON 字符串转换为 java 对象:

 String jsonString = "{
  "libraryname": "My Library",
  "mymusic": [
    {
      "Artist Name": "Aaron",
      "Song Name": "Beautiful"
    },
    {
      "Artist Name": "Britney",
      "Song Name": "Oops I did It Again"
    },
    {
      "Artist Name": "Britney",
      "Song Name": "Stronger"
    }
  ]
}"

我的目标是轻松访问它,例如:

 (e.g. MyJsonObject myobj = new MyJsonObject(jsonString)
myobj.mymusic[0].id would give me the ID, myobj.libraryname gives me "My Library").

我听说过 Jackson,但我不确定如何使用它来适应我拥有的 json 字符串,因为它不仅仅是键值对,因为涉及“mymusic”列表。我如何与杰克逊一起完成此任务,或者如果杰克逊不是最适合此任务的人,我是否有更简单的方法可以完成此任务?

原文由 Rolando 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 641
2 个回答

无需为此使用 GSON;杰克逊可以做简单的地图/列表:

 ObjectMapper mapper = new ObjectMapper();
Map<String,Object> map = mapper.readValue(json, Map.class);

或更方便的 JSON 树:

 JsonNode rootNode = mapper.readTree(json);

顺便说一句,您没有理由不能真正创建 Java 类并更方便地执行它(IMO):

 public class Library {
  @JsonProperty("libraryname")
  public String name;

  @JsonProperty("mymusic")
  public List<Song> songs;
}
public class Song {
  @JsonProperty("Artist Name") public String artistName;
  @JsonProperty("Song Name") public String songName;
}

Library lib = mapper.readValue(jsonString, Library.class);

原文由 StaxMan 发布,翻译遵循 CC BY-SA 3.0 许可协议

查看谷歌的 Gson: http ://code.google.com/p/google-gson/

从他们的网站:

 Gson gson = new Gson(); // Or use new GsonBuilder().create();
MyType target2 = gson.fromJson(json, MyType.class); // deserializes json into target2

你只需要用 json 字符串中的所有字段创建一个 MyType 类(当然重命名)。如果您更喜欢手动进行所有解析(也很简单),那么当您处理数组时,它可能会变得有点复杂,请查看 http://www.json.org/ 并下载 Json 的 Java 源代码解析器对象。

原文由 jpalm 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题