在java或安卓中解析JSON有很多种方式,可以用谷歌给安卓提供的原生的解析方式解析安卓,也可以选择第三方类库,一些比较流行的解析方式如fastjson,Gson等,本文就简单介绍一下java工程中fastjson解析json数据。在介绍fastjson解析之前,我想先给大家用谷歌给安卓提供的原生解析方式解析一个JSON数据串。
(一)google原生的解析方式:
用原生的解析方式需要用到一些google提供的类库,在你的工程下新建一个org.json包,然后可以从https://github.com/stleary/JSON-java下载其提供的java解析JSON的类库
然后把这些下载好的类复制到org.json包下,如下图:
给出json串如下:
{"firstName":"John","lastName":"Smith","address":{"streetAddress":"奥运村西", "city":"北京","postalCode":"100019","state":"北京"}, "phoneNumber":[{"number":" 10086","type":"home"},{"number":" 10010","type":"fax"}],"sex":"male","age":25}{...}里面的是一个JSONObject,而[...]是一个JSONArray
由JSON字符串我们可以定义出实体类如下:
public class User { private String firstName; private String lastName; private String sex; private int age; private Address address; private List<Phone> phoneNumber; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } public List<Phone> getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(List<Phone> phoneNumber) { this.phoneNumber = phoneNumber; } }
public class Address { private String streetAddress; private String city; private String state; private String postalCode; public String getStreetAddress() { return streetAddress; } public void setStreetAddress(String streetAddress) { this.streetAddress = streetAddress; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getState() { return state; } public void setState(String state) { this.state = state; } public String getPostalCode() { return postalCode; } public void setPostalCode(String postalCode) { this.postalCode = postalCode; } }
public class Phone { private String type; private