2012-04-25 116 views
22

我想下面的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”列表,所以它不仅仅是键值对。我如何用杰克逊来实现这个目标,或者如果杰克逊不是最好的,那么我可以用更简单的方法来实现这个目标吗?

+0

的[?转换一个JSON字符串在Java对象]可能重复(http://stackoverflow.com/questions/1395551/convert-a-json-string-to-object-in -java) – bummi 2015-02-10 23:07:13

回答

60

尝试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); 
+0

我从你的代码中得到了解决方案。谢谢 – 2013-04-03 07:31:00

+0

我试图用杰克森发送这种类型的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

+0

这是一个JSON数组,所以它必须绑定到Java'Collection'(如'List')或数组(可以使用类型'Object [] .class')。或者仅仅是'java.lang.Object'(将是'List'类型)。它会工作得很好。 – StaxMan 2013-07-19 20:21:19

0

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/

4

退房谷歌的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源代码。

+0

,就像一个魅力 – 2018-02-07 23:37:24

相关问题