FastJson

本文介绍了FastJson在转换JavaBean时的注意事项,即使字段不匹配也能进行转换,但要求被转换的对象具备无参构造方法。通过举例展示了Man、People和MainActivity三个JavaBean如何运用FastJson进行操作。

1javabean to jsonString

要求成员变量非私有,否则;要求每一个成员变量都有对应的公有getter方法。

2jsonString to javabean
要求javabean必须实现默认构造方法,否则直接抛异常。

在实现默认构造的前提下,还求成员变量非私有,否则;要求每一个成员变量都有对应的公有setter方法。

3、最标准的实现是:
私有化成员变量,并为其添加gettersetter方法。
如果要生成有参构造方法,必须附带无参构造方法。

------FastJson使用注意事项--- 字段不同没关系,都可以通过,甚至一个字段都不匹配都可以

                 但是被转换的javabean必须存在无参构造方法

--- 举个例子

  ----- 3个javabean

  Man,java

public class Man {
    public  String tall;

    public Man() {

    }

    @Override
    public String toString() {
        return "Man{" +
                "tall='" + tall + '\'' +
                '}';
    }
}

Student.Java
public class Student {
    public String name;
    public String id;
    public String stuenetId;
    public String sex;

    public Student() {
    }

    public Student(String name, String id, String stuenetId) {
        this.name = name;
        this.id = id;
        this.stuenetId = stuenetId;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", id='" + id + '\'' +
                ", stuenetId='" + stuenetId + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }
}

People.java

public class People {
    public String name;
    public String id;

    public People() {
    }

    public People(String name, String id) {
        this.name = name;
        this.id = id;
    }

    @Override
    public String toString() {
        return "People{" +
                "name='" + name + '\'' +
                ", id='" + id + '\'' +
                '}';
    }
}

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        fastJsonWithDiffFields();
    }

    private void fastJsonWithDiffFields() {
        Student student = new Student("李明明", "007", "008");
        People people = new People("程英", "123");
        String s = JSON.toJSONString(student);
        String p = JSON.toJSONString(people);


        Log.i(TAG, "fastJsonWithDiffFields: s = " + s);
        Log.i(TAG, "fastJsonWithDiffFields: p = " + p);


        // TODO: 2017/3/23 s - > People
        // Caused by: com.alibaba.fastjson.JSONException: default constructor not found. class com.adnonstop.fastjsonfieldtest.bean.People

        People people1 = JSON.parseObject(s, People.class);

        if (people1 != null)
            Log.i(TAG, "fastJsonWithDiffFields: s - > People  = " + people1.toString());

        // TODO: 2017/3/23 p->Stuent
        Student student1 = JSON.parseObject(p, Student.class);
        if (student1 != null)
            Log.i(TAG, "fastJsonWithDiffFields: p - > Student = " + student1);

        // TODO: 2017/3/23 p - >Man
        Man man = JSON.parseObject(p, Man.class);
        if (man != null)
            Log.i(TAG, "fastJsonWithDiffFields: man = " + man.toString());
    }
}

---------- 执行结果 
 s = {"id":"007","name":"李明明","stuenetId":"008"}
 p = {"id":"123","name":"程英"}
 s - > People  = People{name='李明明', id='007'}
 p - > Student = Student{name='程英', id='123', stuenetId='null', sex='null'}
 p -> man = Man{tall='null'}


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值