当前位置: 首页 > 面试题库 >

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

田翰林
2023-03-14
问题内容

我想将以下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,但是由于涉及“
mymusic”列表,我不知道如何使用它来适应我拥有的json字符串,因为它不仅仅是键值对。如果杰克逊不是最好的选择,我该如何用杰克逊完成?


问题答案:

为此,无需与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);


 类似资料:
  • 我想将以下字符串转换为对象: 要将其转换为对象,我创建了以下类: 我使用Jackson库转换到。以下是我如何使用杰克逊转换: 问题是,在转换上面的中User对象始终是空的。我做错了什么? 提前谢谢。

  • 我听说过Jackson,但我不确定如何使用它来适应我所拥有的json字符串,因为它不仅仅是键值对,因为涉及到“MyMusic”列表。如果杰克逊不是最好的,我怎么能和杰克逊一起完成这件事呢?或者有什么更简单的方法可以让我完成这件事呢?

  • 问题内容: 我一直在寻找与将JSON字符串转换为Java对象有关的示例,但没有找到任何好的示例。我发现的那个曾经真的很基础,却没有真正处理复杂的JSON字符串。 我正在制作一个使用谷歌翻译API将字符串从英语翻译成不同语言的应用程序。Google的查询回应是…以下文字采用JSON格式, 到目前为止,我的方法是使用GSON API,但实际上,我被该如何处理这个复杂的结果并创建Java对象所困扰? 我

  • 问题内容: 这是我的JSON数组:- 我的String对象中有这个。现在,我想将其转换为Java对象并将其存储在Java对象列表中。例如在学生对象中。我正在使用下面的代码将其转换为Java对象列表:- 我的清单课程是:- 我的学生对象是:- 我在这里想念什么吗?我收到以下异常消息:- 问题答案: 您要Jackson解析一个。告诉它解析一个(学生)。由于是通用的,因此通常会使用TypeReferen

  • 这是我的JSON数组:- 我在String对象中有这个。现在我想把它转换成Java对象并存储在Java对象列表中。例如在学生对象中。我使用下面的代码将其转换为Java对象列表:-

  • 问题内容: 将字符串表示形式转换为对象,但我要相反。对象要转换为JSON字符串,我有一个链接http://www.devcurry.com/2010/03/convert- javascript-object-to-json.html, 但是它需要json2.js jQuery是否具有本机功能方法来做到这一点? 问题答案: jQuery只会在调用本机浏览器方法之前进行一些正则表达式检查。如果不可用