问题描述
{ "fullname": "Sean Kelly", "org": "SK Consulting", "emailaddrs": [ {"type": "work", "value": "kelly@seankelly.biz"}, {"type": "home", "pref": 1, "value": "kelly@seankelly.tv"} ], "telephones": [ {"type": "work", "pref": 1, "value": "+1 214 555 1212"}, {"type": "fax", "value": "+1 214 555 1213"}, {"type": "mobile", "value": "+1 214 555 1214"} ], "addresses": [ {"type": "work", "format": "us", "value": "1234 Main StnSpringfield, TX 78080-1216"}, {"type": "home", "format": "us", "value": "5678 Main StnSpringfield, TX 78080-1316"} ], "urls": [ {"type": "work", "value": "http://seankelly.biz/"}, {"type": "home", "value": "http://seankelly.tv/"} ] } 请问如何取每个元素啊~来段能用的代码,谢谢~
解决方案
需要Jackson。http://jackson.codehaus.org/package jsonparsingtest;import java.util.ArrayList;import java.util.List;import org.codehaus.jackson.map.ObjectMapper;public class JsonParsingTest {public static class Person {private String fullname = null;private String org = null;private List<Address> emailaddrs = new ArrayList<Address>();private List<Address> telephones = new ArrayList<Address>();private List<Address> addresses = new ArrayList<Address>();private List<Address> urls = new ArrayList<Address>();public String getFullname() {return fullname;}public void setFullname(String fullname) {this.fullname = fullname;}public String getOrg() {return org;}public void setOrg(String org) {this.org = org;}public List<Address> getEmailaddrs() {return emailaddrs;}public void setEmailaddrs(List<Address> emailaddrs) {this.emailaddrs = emailaddrs;}public List<Address> getTelephones() {return telephones;}public void setTelephones(List<Address> telephones) {this.telephones = telephones;}public List<Address> getAddresses() {return addresses;}public void setAddresses(List<Address> addresses) {this.addresses = addresses;}public List<Address> getUrls() {return urls;}public void setUrls(List<Address> urls) {this.urls = urls;}}public static class Address {private String type = null;private String value = null;private String format = null;private int pref = 0;public String getType() {return type;}public void setType(String type) {this.type = type;}public String getValue() {return value;}public void setValue(String value) {this.value = value;}public String getFormat() {return format;}public void setFormat(String format) {this.format = format;}public int getPref() {return pref;}public void setPref(int pref) {this.pref = pref;}}public static void main(String[] args) throws Exception {ObjectMapper om = new ObjectMapper();// 对象就在这里读取。Person person = om.readValue(System.in, Person.class);// 怎么用,随便。System.out.println(person.getFullname());System.out.println(person.getEmailaddrs().get(0).getValue());}}
解决方案二:
当前使用世界上最快的json解析器fastjson了
解决方案三:
json-lib这样行吧?public static void main(String[] args) {String jsonString="{'fullname': 'Sean Kelly','org': 'SK Consulting','emailaddrs': [{'type': 'work', 'value': 'kelly@seankelly.biz'},{'type': 'home', 'pref': 1, 'value': 'kelly@seankelly.tv'} ]}";JSONObject jsonObject = new JSONObject().fromObject(jsonString);Object obje=jsonObject.get("emailaddrs");Object obje1=jsonObject.get("addresses");}
解决方案四:
使用fastJson反向生成对应的Model的List
解决方案五:
使用fastJson反向生成对应的Model的List