Json源生解析

反解析生成Json格式

TestJson.java

public class TestJson {
    public static void main(String[] args) {
        JSONObject object = new JSONObject();
        object.put("firstName", "John");
        object.put("lastName", "Smith");
        object.put("sex", "male");
        object.put("age", 25);
        JSONObject address = new JSONObject();
        address.put("streetAddress", "宝盛北里西区28号");
        address.put("city", "北京");
        address.put("state", "北京");
        address.put("postalCode", "100019");
        object.put("address", address);
        JSONArray phoneNumber = new JSONArray();
        JSONObject number1 = new JSONObject();
        number1.put("type", "home");
        number1.put("number", " 10086");
        phoneNumber.put(number1);
        JSONObject number2 = new JSONObject();
        number2.put("type", "fax");
        number2.put("number", " 10010");
        phoneNumber.put(number2);
        object.put("phoneNumber", phoneNumber);
        System.out.println(object.toString());
    }
}
Address.java

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;
    }
}

Phone.java

public class Phone {
    private String type;
    private String number;

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }
}

User.java

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;
    }
}

生成的JSON格式的解析文件

"{\"firstName\":\"John\",\"lastName\":\"Smith\",\"address\":{\"streetAddress\":\"宝盛北里西区28号\",\"city\":\"北京\",\"postalCode\":\"100019\",\"state\":\"北京\"},\"phoneNumber\":[{\"number\":\" 10086\",\"type\":\"home\"},{\"number\":\" 10010\",\"type\":\"fax\"}],\"sex\":\"male\",\"age\":25}\n";
将Json格式的文件进行解析存入类中:
public class TestJson02 {
    public static void main(String[] args) {
        String str = "{\"firstName\":\"John\",\"lastName\":\"Smith\",\"address\":{\"streetAddress\":\"宝盛北里西区28号\",\"city\":\"北京\",\"postalCode\":\"100019\",\"state\":\"北京\"},\"phoneNumber\":[{\"number\":\" 10086\",\"type\":\"home\"},{\"number\":\" 10010\",\"type\":\"fax\"}],\"sex\":\"male\",\"age\":25}\n";
        User user = parserUser(str);
        System.out.println(user.getFirstName());
        System.out.println(user.getAddress().getStreetAddress());
        System.out.println(user.getPhoneNumber().get(0).getNumber());
        user.setFirstName("aaa");
        System.out.println(toJSONString(user));
    }
  
    private static User parserUser(String str) {
        JSONObject object = new JSONObject(str);
        User user = new User();
        user.setFirstName(object.optString("firstName"));
        user.setLastName(object.optString("lastName"));
        user.setSex(object.optString("sex"));
        user.setAge(object.optInt("age"));
        JSONObject addressObj = object.optJSONObject("address");
        Address address = new Address();
        address.setStreetAddress(addressObj.optString("streetAddress"));
        address.setCity(addressObj.optString("city"));
        address.setState(addressObj.optString("state"));
        address.setPostalCode(addressObj.optString("postalCode"));
        user.setAddress(address);
        List<Phone> phones = new ArrayList<>();
        JSONArray phoneNumber = object.optJSONArray("phoneNumber");
        for (int i = 0; i < phoneNumber.length(); i++) {
            JSONObject numberObj = phoneNumber.optJSONObject(i);
            Phone phone = new Phone();
            phone.setType(numberObj.optString("type"));
            phone.setNumber(numberObj.optString("number"));
            phones.add(phone);
        }
        user.setPhoneNumber(phones);
        return user;
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值