Rol*_*ndo 56 java json jackson
我想将以下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"}]}"
Run Code Online (Sandbox Code Playgroud)
我的目标是轻松访问它:
(e.g. MyJsonObject myobj = new MyJsonObject(jsonString)
myobj.mymusic[0].id would give me the ID, myobj.libraryname gives me "My Library").
Run Code Online (Sandbox Code Playgroud)
我听说过Jackson,但我不确定如何使用它来适应我所拥有的json字符串,因为它不仅仅是关键值对,因为涉及"mymusic"列表.我怎么能用杰克逊来完成这个呢?或者如果杰克逊不是最好的话,我能有更简单的方法吗?
Sta*_*Man 116
无需为GSON服务; 杰克逊可以做普通的地图/列表:
ObjectMapper mapper = new ObjectMapper();
Map<String,Object> map = mapper.readValue(json, Map.class);
Run Code Online (Sandbox Code Playgroud)
或更方便的JSON树:
JsonNode rootNode = mapper.readTree(json);
Run Code Online (Sandbox Code Playgroud)
顺便说一句,没有理由不能实际创建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);
Run Code Online (Sandbox Code Playgroud)
jpa*_*alm 19
查看Google的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
Run Code Online (Sandbox Code Playgroud)
您只需要使用json字符串中的所有字段创建一个MyType类(当然是重命名的).如果您喜欢手动执行所有解析(也非常简单),那么在执行数组时可能会变得更复杂一些,请查看http://www.json.org/并下载Json的Java源代码解析器对象.
Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonObject object = (JsonObject) parser.parse(response);// response will be the json String
YourPojo emp = gson.fromJson(object, YourPojo.class);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
219371 次 |
最近记录: |