json转换成对象

在json转换成对象时,json的key会与java 类的字段一一对应。如果没有映射上的java字段会在该数据类型上填充默认值,如int 0,String null 等。

没有映射的json key在程序结束后会用警告显示出来,告知程序员那个key值没有被映射上

import net.sf.json.JSONObject;

public class MainClass {

    public static void main(String[] args) {
        TestJsonBean();

    }

    /**
     * java对象与json对象互相转换
     */
    private static void TestJsonBean() {
        /**
         * 创建java对象
         */
        Student student = new Student();
        student.setId(1);
        student.setName("jag");
        student.setSex("man");
        student.setAge(25);
        student.setHobby(new String[]{"篮球","上网","跑步","游戏"});
        /**
         * java对象转换成json对象,并获取json对象属性
         */
        JSONObject jsonStu = JSONObject.fromObject(student);
        System.out.println(jsonStu.toString());
        System.out.println(jsonStu.getJSONArray("hobby"));
        /**
         * json对象转换成java对象,并获取java对象属性
         */
        Student stu = (Student) JSONObject.toBean(jsonStu, Student.class);
        System.out.println(stu.getName());
        /**
         * 创建json对象
         */
        JSONObject jsonObj = new JSONObject();
        jsonObj.put("id",1);
        jsonObj.put("name","张勇");
        jsonObj.put("sex","男");
        //jsonObj.put("age",24);
        //jsonObj.put("hobby",new String[]{"上网","游戏","跑步","音乐"});
        //System.out.println(jsonObj.toString());
        /**
         * json对象转换成java对象
         */
        Student stud = (Student) JSONObject.toBean(jsonObj,Student.class);
        System.out.println(stud.getAge());
    }
}

运行结果

{"age":25,"hobby":["篮球","上网","跑步","游戏"],"id":1,"name":"jag","sex":"man"}
["篮球","上网","跑步","游戏"]
jag
0

改一下代码

JSONObject jsonObj = new JSONObject();
        jsonObj.put("id",1);
        jsonObj.put("name","张勇");
        jsonObj.put("old","男");//这个是类没有的元素

结果;

{"age":25,"hobby":["篮球","上网","跑步","游戏"],"id":1,"name":"jag","sex":"man"}
["篮球","上网","跑步","游戏"]
jag
0
五月 16, 2016 5:18:22 下午 net.sf.json.JSONObject toBean
警告: Tried to assign property old:java.lang.String to bean of class Student

student 类

import java.io.Serializable;

public class Student implements Serializable {

    private long id;
    private String name;
    private String sex;
    private int age;
    private String[] hobby;
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    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 String[] getHobby() {
        return hobby;
    }
    public void setHobby(String[] hobby) {
        this.hobby = hobby;
    }

}

时间: 2024-09-30 05:33:05

json转换成对象的相关文章

json字符串转换成对象,对象转换成json字符串

方法一: 程序集:  System.Web.Extensions; 命名空间:System.Web.Script.Serialization; 最重要的类:JavaScriptSerializer //实例化 JavaScriptSerializer js = new JavaScriptSerializer(); js.Serialize();//将对象转换成json字符串:    序列号 js.Deserialize();//将json字符串转换成对象:  反序列化 方法二: 程序集:New

在一般处理程序中,把Form Post过来的表单集合转换成对象 ,仿 MVC post,反射原理

using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; using System.Reflection; using System.Web; using WebSite.Models; namespace testWebuploader.Scripts.Plugin.webuploader_v0._1._2 { /// <summary> /

request请求转换成对象。

1)前端post数据过来,key和val键值对会有很多,这个时候往后端进行插值的时候,最好将这些键值对转换成对象进行处理. 使用common-beanutils 来将前端传递过来的map直接转换成对象. 依赖jar包: 前端代码的name属性要和后端bean对象属性一致! 1 <h1>测试POST</h1> 2 <form action="/bean" method="post"> 3 <input type="t

C#中,JSON字符串转换成对象。

在前台提交(post)的数据中.除了强类型的数据外,还有一个额外的json数据提交 在这里我的办法是,在前台把json对象转换成字符串,然后提交. 测试demo 前台: @using(Html.BeginForm()) { <input type="text" id="json" name="json"/> <input type="submit" value="提交"/> } &l

Gson解析json字符串、json数组转换成对象

实体类: public class Product { private int id; private String name; private String date; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name

json转换成list map集合

import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Set; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class JSONHelper { /** * 将JSONObjec对象转换成Map集合 * @see JSONHelper#reflect(JSONArray)

C# xml转换成对象

C#内部封装的类库"namespace System.Net.Http class HttpClient", (1)此内部有进行请求所用的方法此处用得时Post的异步请求,此时的请求头是固定的先忽略 public class Post { private static readonly HttpClient _httpClient; //创建类库成员变量,以注入的方式进行方法调用  public async Task<string> PostAsync(string fil

dom4j将xml转换成对象

package test; import java.lang.reflect.Field; import java.util.HashMap; import java.util.List; import java.util.Map; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.tree.DefaultAttribute; public

json_encode($b, JSON_FORCE_OBJECT) 可以强制转换成对象

最近在为移动端的项目提供接口,数据格式都为json,不过在过程中遇到一个小问题,代码如下:情况一:$tmp = array('a','b','c');echo json_encode($tmp);输出结果:['a','b','c'] 情况二:$tmp = array('a'=>'a','b'=>'b','c'=>'c');echo json_encode($tmp);输出结果:{'a':'a','b':'b','c':'c'} 问题出来了:在二中,如果$tmp 可能为空的情况下,json