如何将下面的json字符串转换为java对象?
我想下面的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.myrows[0].id would give me the ID, myobj.libraryname gives me "My Library").
我听说杰克逊的,但我不确定如何使用它来适应json字符串,因为它涉及到“mymusic”列表,所以它不仅仅是键值对。我如何用杰克逊来实现这个目标,或者如果杰克逊不是最好的,那么我可以用更简单的方法来实现这个目标吗?
尝试JSON-LIB-2.3-jdk15.jar 下载没有必要去与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);
我从你的代码中得到了解决方案。谢谢 – 2013-04-03 07:31:00
我试图用杰克森发送这种类型的json字符串,但它只返回空值,'[{“id”:62,“name”:“projectname1”,“batchClassId”:1283,“batchClassName”:“sample_batchclass26” ,“assetCount”:0},{“id”:8,“name”:“projectname_tmp”,“batchClassId”:1283,“batchClassName”:“sample_batchclass26”,“assetCount”:0}] – 2013-07-19 05:41:39
这是一个JSON数组,所以它必须绑定到Java'Collection'(如'List')或数组(可以使用类型'Object [] .class')。或者仅仅是'java.lang.Object'(将是'List'类型)。它会工作得很好。 – StaxMan 2013-07-19 20:21:19
GSON也不错吧:http://code.google.com/p/google-gson/
“ GSON是可以用来将Java对象转换成他们的JSON表示创建一个Java库,它也可以用来将JSON字符串转换为相应的Java。 。对象GSON可以用任意的Java对象,包括你没有的源代码已经存在的对象的工作 “
检查API的例子:https://sites.google.com/site/gson/gson-user-guide#TOC-Overview 更多的例子:http://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/
退房谷歌的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
你只需要作出的MyType类(改名,当然)在JSON字符串的所有字段。当你在做数组时,它可能会变得更加复杂,如果你想手动完成所有的解析(也很容易),请检查http://www.json.org/并下载Json解析器对象的Java源代码。
,就像一个魅力 – 2018-02-07 23:37:24
的[?转换一个JSON字符串在Java对象]可能重复(http://stackoverflow.com/questions/1395551/convert-a-json-string-to-object-in -java) – bummi 2015-02-10 23:07:13