精华内容
下载资源
问答
  • 对象转json原理
    2020-06-13 20:12:42

    对象转JSon JSON转对象

    public class ObjectMapperUtil {
    ​
        //1.定义mapper对象
        private static final  ObjectMapper MAPPER = new ObjectMapper();
        
        //2.将对象转化为JSON
        public static String toJSON(Object target) {
            try {
                return MAPPER.writeValueAsString(target); 
            } catch (JsonProcessingException e) {
                //检查异常转化为运行时异常
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
        
        //3.将JSON串转化为对象   用户传递什么类型,就能返回什么对象
        public static <T> T toObj(String json,Class<T> target) {
            try {
                return MAPPER.readValue(json, target);
            } catch (JsonProcessingException e) {
                
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
    }
    

    JSON转化原理

    /**
         * 原理说明:
         *  1.对象转化JSON时,其实调用的是对象身上的getXXXX()方法.
         *  获取所有的getLyj()方法-----之后去掉get-----首字母小写---lyj属性.
         *  json串中的key就是该属性.value就是属性的值.  lyj:"xxxxx"
         *  
         *  2.JSON转化为对象原理说明
         *  1).定义转化对象的类型(ItemDesc.class)
         *  2).利用反射机制实例化对象  class.forName(class)   现在的属性都为null
         *  3).将json串解析
         *                object key:value
         *                array  value1,value2
         *  4).根据json串中的属性的itemId,之后调用对象的(set+首字母大写)setItemId方法实现赋值
         */
    
    @Test
        public void test03() throws JsonProcessingException {
            ItemDesc itemDesc = new ItemDesc();
            itemDesc.setItemId(100L)
                    .setItemDesc("测试数据")
                    .setCreated(new Date())
                    .setUpdated(itemDesc.getCreated());
            
            //思考:对象转化为JSON时,底层实现如何.
            String json = OBJECTMAPPER.writeValueAsString(itemDesc);
            System.out.println(json);
            
            //{id:1,name:"xxxx"}
            OBJECTMAPPER.readValue(json,ItemDesc.class);
        }
    

    static final

    //该类被调用1次   则对象被创建1次
        //static 属性属于类的  无论调用多少次  对象1个   小明 类.OBJECTmAPPER=修改的对象
        //static final 为了安全  不允许别人修改
        private static final ObjectMapper OBJECTMAPPER = new ObjectMapper();   
    
    更多相关内容
  • 这篇文章主要介绍了Java对象转json的方法过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下1、 jsonlib:个人感觉最麻烦的一个需要导入的包也多,代码也...

    这篇文章主要介绍了Java对象转json的方法过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    1、 jsonlib:个人感觉最麻烦的一个需要导入的包也多,代码也相对多一些。

    2、Gson:google的

    3、FastJson:阿里巴巴的,个人觉得这个比较好,而且据说这个也是性能最好一个。

    下面就贴出三种写法的代码,读者可以任选其一去使用。关于demo里面所使用的jar包,可以自行去下载。

    Jsonlib:

    package json;

    import java.util.ArrayList;

    import java.util.List;

    import net.sf.json.JSONArray;

    import user.User;

    public class Jsonlib {

    public static void main(String[] args) {

    User user1 = new User();

    user1.setUsername("111");

    user1.setPassword("111");

    User user2 = new User();

    user2.setUsername("222");

    user2.setPassword("222");

    List lists = new ArrayList();

    lists.add(user1);

    lists.add(user2);

    JSONArray fromObject1 = JSONArray.fromObject(user1);

    JSONArray fromObject2 = JSONArray.fromObject(lists);

    String str1 = fromObject1.toString();

    String str2 = fromObject2.toString();

    System.out.println(str1);

    //打印结果

    //[{"password":"111","username":"111"}]

    System.out.println(str2);

    //打印结果

    //[{"password":"111","username":"111"},{"password":"222","username":"222"}]

    }

    }

    jar:

    ca2b75388dcb5fc673bb91cb199df2c0.png

    Gson:

    package json;

    import java.util.ArrayList;

    import java.util.List;

    import com.google.gson.Gson;

    import user.User;

    public class Gson_a {

    public static void main(String[] args) {

    User user1 = new User();

    user1.setUsername("111");

    user1.setPassword("111");

    User user2 = new User();

    user2.setUsername("222");

    user2.setPassword("222");

    List lists = new ArrayList();

    lists.add(user1);

    lists.add(user2);

    Gson gson = new Gson();

    String json1 = gson.toJson(user1);

    System.out.println(json1);

    //打印结果

    //{"username":"111","password":"111"}

    String json2 = gson.toJson(lists);

    System.out.println(json2);

    //打印结果

    //[{"username":"111","password":"111"},{"username":"222","password":"222"}]

    }

    }

    jar:

    b09a0b54e24584bee63f2de5cc5dcf23.png

    FastJson:

    package json;

    import java.util.ArrayList;

    import java.util.List;

    import com.alibaba.fastjson.JSON;

    import user.User;

    public class FastJson {

    public static void main(String[] args) {

    User user1 = new User();

    user1.setUsername("111");

    user1.setPassword("111");

    //1、单个对象转换成json

    String jsonString = JSON.toJSONString(user1);

    System.out.println(jsonString);

    //打印结果

    //{"password":"111","username":"111"}

    User user2 = new User();

    user2.setUsername("222");

    user2.setPassword("222");

    List lists = new ArrayList();

    lists.add(user1);

    lists.add(user2);

    String jsonString2 = JSON.toJSONString(lists);

    System.out.println(jsonString2);

    //打印结果

    //[{"password":"111","username":"111"},{"password":"222","username":"222"}]

    }

    }

    jar:

    a85a300bbab9401f59196fea538a9020.png

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • JSON是JavaScript Object Notation的缩写,可以翻译为JS对象图谱。JSON是一种轻量级的数据交换格式,它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和...

    什么是JSON

    JSON是JavaScript Object Notation的缩写,可以翻译为JS对象图谱。JSON是一种轻量级的数据交换格式,它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言JSON 易于人阅读和编写,同时也易于机器解析和生成,可以有效地提升网络传输效率。——百度百科
    在JSON出现之前,大家一直用XML来传递数据。因为XML是一种纯文本格式,所以它适合在网络上交换数据。XML本身不算复杂,但是,加上DTD、XSD、XPath、XSLT等一大堆复杂的规范以后,任何正常的软件开发人员碰到XML都会感觉头大了,最后大家发现,即使你努力钻研几个月,也未必搞得清楚XML的规范。
    终于,在2002年的一天,道格拉斯·克罗克福特(DouglasCrockford)同学为了拯救深陷水深火热同时又被某几个巨型软件企业长期愚弄的软件工程师,发明了JSON这种超轻量级的数据交换格式。
    由于JSON非常简单,很快就风靡Web世界,并且成为ECMA标准。几乎所有编程语言都有解析JSON的库,而在JavaScript中,我们可以直接使用JSON,因为JavaScript内置了JSON的解析。把任何JavaScript对象变成JSON,就是把这个对象序列化成一个JSON格式的字符串,这样才能够通过网络传递给其他计算机。如果我们收到一个JSON格式的字符串,只需要把它反序列化成一个JavaScript对象,就可以在JavaScript中直接使用这个对象了。——转自JSON是什么?如何正确理解?

    JSON语法规则

    对象(Object)用大括号(”{}”)表示,大括号里描述对象拥有的属性以及属性值。
    键/值对(key/value)表示对象属性/属性值,键与值之间使用冒号连接, 多个键值对之间使用逗号分隔。其中键值对的键应使用双引号引住,值(value)有字符串、数值、布尔值、null、对象和数组几种类型。
    数组(Array)用方括号(“[]”)表示,并且数组可以与对象相互嵌套。

    Java中对象与JSON字符串的相互转换

    转换的方式主要有两种,一种是引入Gson JAR包进行转换,另一种是引入FastJson JAR包进行转换。

    方法1:引入Gson JAR包

    • 将对象转换为JSON字符串步骤:
    1. 引入JAR包
    2. 在需要转换JSON字符串的位置编写如下代码即可:
      String json = new Gson().toJSON(要转换的对象);
      案例:
      Book b = new Book();
      String json = new Gson().toJson(b);
    • 将JSON字符串转换为对象步骤:
    1. 引入JAR包
    2. 在需要转换Java对象的位置, 编写如下代码:
      对象 = new Gson().fromJson(JSON字符串,对象类型.class);
      案例:
      String json = “{“id”:1,“name”:“朝花夕拾”,“author”:“鲁迅”,“info”:“讲述了作者的一系列生活经历”,“price”:58.0}”;
      Book book = new Gson().fromJson(json, Book.class);

    方法2:引入FastJson JAR包

    • 将对象转换为JSON字符串步骤:
    1. 引入JAR包
    2. 在需要转换JSON字符串的位置编写如下代码即可:
      String json=JSON.toJSONString(要转换的对象);
      案例:
      Book b = new Book();
      String json=JSON.toJSONString(b);
    • 将JSON字符串转换为对象步骤:
    1. 引入JAR包
    2. 在需要转换Java对象的位置, 编写如下代码:
      类型 对象名=JSON.parseObject(JSON字符串, 类型.class) 或
      List<类型> list=JSON.parseArray(JSON字符串,类型.class);
      案例:
      String json = “{“id”:1,“name”:“朝花夕拾”,“author”:“鲁迅”,“info”:“讲述了作者的一系列生活经历”,“price”:58.0}”;
      Book book = JSON.parseObject(json, Book.class);
    展开全文
  • 写在前面,首先,我用的java转json序列化的工具是java开源的jackson。今天在做后端接口的时候,发现获取的json对象中少了几个属性,因为其他的接口都能得到正确的json,所以很快就找到了问题所在,先上代码public ...

    写在前面,首先,我用的java转json序列化的工具是java开源的jackson。

    今天在做后端接口的时候,发现获取的json对象中少了几个属性,因为其他的接口都能得到正确的json,所以很快就找到了问题所在,先上代码

    public class ChargeDto implements Serializable {

    private static final long serialVersionUID = -4617215025083571608L;

    protected Integer cId;

    protected String Item;

    protected Double Amount;

    protected Integer Vcid;

    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")

    protected Date CreateTime;

    protected String CreateEName;

    }

    {

    "status": 200,

    "message": "成功",

    "data": [

    {

    "CreateTime": "2020-05-04 01:41:19"

    },

    {

    "CreateTime": "2020-05-04 02:10:11"

    }]

    }

    是的,这里我的类中只有属性,没有getter、setter方法,所以获取的json中少了一些属性。

    解决方法一:后来我将类中的所有属性加上了getter、setter方法之后得到了正确的json对象。

    {

    "status": 200,

    "message": "成功",

    "data": [

    {

    "cId": 1,

    "item": "挂号",

    "createEName": "医生1",

    "createTime": "2020-05-04 01:41:19",

    "amount": 5,

    "vcid": 1

    },

    {

    "cId": 2,

    "CreateTime": "2020-41-04 01:41:38",

    "item": "处方结算",

    "createEName": "医生1",

    "createTime": "2020-05-04 02:10:11",

    "amount": 122,

    "vcid": 1

    }]

    }

    虽然很快解决了,但是我还是上网查了下原因,然后我查阅知晓对于我用的jackson来说,需要类中有getter方法。是的,虽然我一次性把Setter方法也加上了,但是对于jackson将java对象转json来说,只要有Getter方法就行了。甚至是不需要有属性!

    然后我发现我一开始虽然丢失了几个属性,但是我也是有属性转为了json的,就是CreateTime。于是我就注意到了我在CreateTime属性上加的注解@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss"),我想着是不是和这个注解有关,于是我将Getter方法删去,在其他属性上加上了注解

    public class ChargeDto implements Serializable {

    private static final long serialVersionUID = -4617215025083571608L;

    protected Integer cId;

    protected String Item;

    @JsonFormat

    protected Double Amount;

    @JsonFormat

    protected Integer Vcid;

    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")

    protected Date CreateTime;

    protected String CreateEName;

    }

    然后在json中成功都得到了该属性,

    {

    "status": 200,

    "message": "成功",

    "data": [

    {

    "Amount": 5,

    "Vcid": 1,

    "CreateTime": "2020-04-04 01:41:19"

    },

    {

    "Amount": 122,

    "Vcid": 1,

    "CreateTime": "2020-04-04 01:41:38"

    }]

    }

    所以,解决方法二:在你需要转为json的属性上加上@JsonFormat注解即可

    这其中的具体原理我并没有去深究,之后有时间再去看看具体源码。如果有大佬都懂的话可以留言指导,或者留下博客链接,小弟必去造访。

    以上都是本人自己的理解,可能会与真正的解答不一致,欢迎各位大佬指正。

    展开全文
  • JSON:JavaScript 对象表示法(JavaScript Object Notation)。 JSON 是存储和交换文本信息的语法。类似 XML。 JSON 比 XML 更小、更快,更易解析。 和 XML 一样,JSON 也是基于纯文本的数据格式。由于 JSON 天生是...
  • web工程中,数据交互是不可避免的,相比xml,json是现在流行的数据交互。 在调试接口中,发现返回字段的大小写不是我所期望的,原本应该返回的nNum字段变成了nnum,这样就导致和前端约定的有出入了。 jackson web...
  • (ObjectMapper)Json转化对象的基本原理

    千次阅读 2022-04-10 18:49:37
    在实际开发过程中,会经常接收Json字符串并转化为相应对象,而这个转化过程中若报错,无非提示,没有set方法,或者没有get方法,或者静态内部类没有默认构造函数,静态内部类没有带全部参数构造函数,无法转化多了...
  • 但是,这种方法仅适用与@requestBody注解返回值,如果是先在程序内部转换成json对象,再使用或返回这个json对象,就会造成Date对象的值是fastTime一栏中的数值,而不是我们想要的format之后的数据。 解决方案 ...
  • ObjectMapper的readValue方法将json串反序列化为对象的过程大致为: 依据传入的json串和目标对象类型分别创建JsonParse和JavaType,随后生成DeserializationConfig、DeserializationContext、JsonDeserializer,其中...
  • JSON对象之间的转换(阿里fastjson)

    千次阅读 2019-11-26 20:31:27
    JSON对象之间的转换 文章目录JSON对象之间的转换1.引入阿里JSON(com.alibaba.fastjson)的pom依赖2.JSON和JSONObject的关系2-1. JSONObject继承了JSON3.JSON和JavaBean的简单转换3-1. JavaBean-->JSON3-2. ...
  • java中JSON转含泛型对象

    千次阅读 2021-12-21 17:15:45
    json使用的是fastjson,json转换对象的时候,如果对象中存在泛型对象,则需要特殊处理下才能正常转换。 使用的是fastjson中的TypeReference A<B<C>> resultObj =JSON.parseObject("转换json",new ...
  • 小编典典这是一个有关如何将Gson与对象列表一起使用的综合示例。这应该 确切 说明如何与Json进行相互转换,如何引用列表等。Test.java的 :import com.google.gson.Gson;import java.util.List;import java.util....
  • JAVA对象转JSON的三种开源实现方式
  • mybatis json转对象Object

    千次阅读 2021-07-19 18:19:10
    在实体类中添加json处理器注解 1.1 实体类 @TableName(value = "user_site_mail", autoResultMap = true) 1.2 具体字段上边 @TableField(value = "business_info", typeHandler = FastjsonTypeHandler.class) 对象...
  • 项目用 Spring 比较多,有没有了解 Spring 的原理?AOP 和 IOC 的原理 Spring Boot除了自动配置,相比传统的 Spring 有什么其他的区别? Spring Cloud 有了解多少? Spring Bean 的生命周期 HashMap 和 has
  • 该脚本可以处理具有多个对象和数组的嵌套json。 请参阅下面的说明和示例文件,以了解其工作原理。 它也可以处理非相似对象。 但是,更多的对象相似性可以使输出更漂亮。 用Python 2.7编写。 最后测试于Python ...
  • 对象转换为json字符串

    千次阅读 2018-08-02 10:07:46
    package com.suyun.utils.json; import java.beans.PropertyDescriptor; import java.lang.reflect.Array; import java.lang.reflect.Field; import java.text.DateFormat; import java.text.SimpleDateFormat; im....
  • 主要介绍了Python Json数据文件操作原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 1、alibaba的JSONObject对象调用toJSONString方法直接转换 pom.xml 依赖: <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>...
  • JSON对象转化为JSON字符串

    千次阅读 2020-01-16 12:29:51
    在进行前端开发的时候,有时我们会遇到要将json对象转化为json字符串,那么该如何进行转化呢??? 我们可以用JSON对象的stringify()和parse()方法。 JSON.stringify(obj) 将JSON对象转为字符串。 JSON.parse(string...
  • JSON.toJSONString 对象转json JSON.parseObject json转对象 demo static User user; static { user = new User(); user.setName("校长"); user.setAge(3); user.setSalary(new BigDecimal("123456789.0123"));...
  • JSON原理解析

    2020-09-19 13:39:40
    JSON的英文全称是JavaScript Object Notation,也就是JS对象标记法。 JSON格式要求 数组或对象,只能有字符串,数字或布尔型值,属性名也需要加引号 JSON对象:符合json格式的js对象 JSON数组:符合Json格式的js数组...
  • JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。 语法 JSON.stringify(value[, replacer[, space]]) 参数说明: value: 必需, 要转换的 JavaScript 值(通常为对象或数组)。 replacer: 可选。...
  • 如何将json文本转换为JavaScript对象

    千次阅读 2017-02-19 14:07:30
    在实际项目开发过程中,json经常应用到的场景是:在后台应用程序中将响应数据封装成json格式,传到前台页面之后,需要将json格式转换为javascript对象,然后在网页中使用该数据 那么,如何将json格式的数据转换为...
  • python2.x版本的字符编码有时让人很头疼,遇到问题,网上方法可以解决错误,但对原理还是一知半解,本文主要介绍 python 中字符串处理的原理,附带解决 json 文件输出时,显示中文而非 unicode 问题。首先简要介绍...
  • 在最近的开发中频繁的用到json,因为要做审核,需要审核的内容进行存储,这就用到了将信息转json存入数据库中。 我的需求中要保存的信息 单个对象 单个集合List, Map<T,T> 组合集合 任意两个集合的组合,集合...
  • 编译原理json解析器

    2017-10-11 18:58:26
    完成json 基本结构(键值对、对象、数组、字符串)的解析, 完成对true、false、null、整数的解析, 完成浮点数的解析; 完成科学计数法表示的数的解析; 完成json 文本的格式化。添加一个命令行参数-pretty,对于...
  • Java中String格式转json格式

    千次阅读 2021-03-16 15:07:18
    所以,我们需要在java代码中,把java中的对象格式json,然后输出。 代码如下: public void service(){  HttpServletResponse response = ServletActionContext.getResponse(); try { response.setHeader(
  • 文章目录1 JSON解析问题1.1 User实体1.2 转换为JSON对象后首字母小写1.3 json对象json字符串与实体互1.3.1 实体转json对象或字符串1.3.2 json对象json字符串转换为实体对象1.4 Gson来解析和反解析json对象...
  • java将Json 字符串成Bean 对象

    千次阅读 2022-04-22 16:29:02
    //把json转成JavaBean(user对象) public void test06() throws IOException { String jsonStr = "{\"id\":1,\"username\":\"zs\",\"password\":\"123456\",\"email\":\"zs@163.com\",\"phone\":\"1386789898\"}"; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 133,379
精华内容 53,351
关键字:

对象转json原理