java对象转换为json字符串_java中将字符串转换为json

java对象转换为json字符串_java中将字符串转换为json概要Jackson是基于java平台的json处理框架。Jackson提供了三种可选的json处理方法:流式API、树模型、数据绑定(dataBinding),其中数据绑定是最常用的处理方式;本文主要介绍数据绑定的处理方式。java对象与json字符串互相转换java对象与json字符串互相转换的关键就是ObjectMapper对象的writeValue()方法和readValue()方法;其中json字符串可以字符串的形式传入/传出,也可以以文件的形式传入/传出,见wri.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

概要

Jackson是基于java平台的json处理框架

Jackson提供了三种可选的json处理方法:流式API、树模型、数据绑定(data Binding),其中数据绑定是最常用的处理方式;本文主要介绍数据绑定的处理方式。

java对象与json字符串互相转换

java对象与json字符串互相转换的关键就是ObjectMapper对象的writeValue()方法 和 readValue()方法; 
其中json字符串可以字符串的形式传入/传出,也可以以文件的形式传入/传出,见writeValue()方法 和 readValue()方法不同的参数。

ObjectMapper mapper = new ObjectMapper(); 
// java对象转换为json字符换
String Json =  mapper.writeValueAsString(student1); 
// json字符串转换为java对象
Student student2 = mapper.readValue(Json, Student.class);

代码示例

import java.io.IOException;
import org.json.JSONObject;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;


public class jacksonTest {
    public static void main(String[] args) {
        ObjectMapper mapper = new ObjectMapper();  
        try {

            /** json字符串转换为java对象 */

            // json中的对象个数比java对象的属性个数少
            JSONObject json1 = new JSONObject();
            json1.put("name", "anne");
            json1.put("age", 15);
            String d1 = json1.toString();
            Student s1 = mapper.readValue(d1, Student.class);
            System.out.println(s1.toString());

            // json中出现java对象中没有的属性
            JSONObject json2 = new JSONObject();
            json2.put("name", "anne");
            json2.put("age", 15);
            json2.put("sex", "boy");
            String d2 = json1.toString();
            Student s2 = mapper.readValue(d2, Student.class);
            System.out.println(s2.toString());

            /** java对象转换为json字符串 */
            Student s3 = new Student();
            s3.setAge(12);
            s3.setHobby("sport");
            s3.setName("anne");
            String d3 = mapper.writeValueAsString(s3);
            System.out.println(d3);

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }



    }

}
@JsonIgnoreProperties(ignoreUnknown = true)
class Student {
    private String name;
    private int age;
    private String hobby;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

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

    public String toString() {
        return "name: " + name + ", age: " + age + ", hobby: " + hobby;
    }
}

输出:

name: anne, age: 15, hobby: null
name: anne, age: 15, hobby: null
{"name":"anne","age":12,"hobby":"sport"}

说明
        1、json字符串中的key应该与java对象的属性名相同
        2、java对象中属性如果为private,则需要显示生成getter/setter方法;如果属性为public,则可以不必写getter/setter方法
        2、java对象如果有自定义的构造方法,json字符串转换为java对象时会出错
        3、如果json字符串中的属性个数小于java对象中的属性个数,可以顺利转换,java中多的那个属性为null
        4、如果json字符串中出现java对象中没有的属性,则在将json转换为java对象时会报错:Unrecognized field, not marked as ignorable 
解决方法: 
在目标对象的类级别上添加注解:@JsonIgnoreProperties(ignoreUnknown = true);如上述代码示例所示

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193186.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 中国it人物_计算机界的名人

    中国it人物_计算机界的名人2006.9.2 07:19早起者并不一定收获最多,但成功者一定是方向对,善管理风险的人。  不管是寿国梁、曹军这样的无奈者,还是张树新、王峻涛这样的迷失者,其先发优势都已消失殆净。  从“先驱”到“先烈”的转变,折射出的是市场的易变性和持续成功的“无规律性”。这种“无规律性”既表现在你所需要坚持的东西上,也表现在日常的经营管理中。  8848

    2022年8月30日
    6
  • VS2013密钥 VS2013专业版密钥 VS2013旗舰版密钥

    VS2013密钥 VS2013专业版密钥 VS2013旗舰版密钥旗舰版VisualStudioUltimate2013KEY(密钥):BWG7X-J98B3-W34RT-33B3R-JVYW9专业版VisualStudioProfessional2013  KEY(密钥):XDM3T-W3T3V-MGJWK-8BFVD-GVPKY

    2022年5月19日
    40
  • pip更新命令以及使用清华镜像快速安装OpenCV-python

    pip更新命令以及使用清华镜像快速安装OpenCV-pythonpip更新命令以及使用清华镜像快速安装OpenCV-python1.pip更新:首先尝试使用pipinstallOpenCV-python进行安装,如果安装出现这种情况:则使用以下命令: python-mpipinstall-U–force-reinstallpip2.使用清华镜像快速安装OpenCV-python如下命令: pipinstallopencv…

    2022年6月7日
    99
  • python语言变量命名-以下选项中不符合 Python 语言变量命名规则的是( )。_学小易找答案…[通俗易懂]

    python语言变量命名-以下选项中不符合 Python 语言变量命名规则的是( )。_学小易找答案…[通俗易懂]【单选题】在Python中,正确的赋值语句为()。【单选题】Python语句print(chr(97))的运行结果是()。【多选题】影响管理者道德因素包括()。【单选题】表达式len(range(1,10))的值为()。【判断题】新闻可视化的方式千差万别,但万变不离其宗,就是要把好看的图表做出来,跟新闻故事无关。【单选题】执行语句for(i=1;i++2>6…

    2022年6月1日
    58
  • IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字-如192.168.0.1/24是什么意思?「建议收藏」

    IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字-如192.168.0.1/24是什么意思?「建议收藏」背景知识IP地址IP地址被用来给Internet上的电脑一个编号。大家日常见到的情况是每台联网的PC上都需要有IP地址,才能正常通信。我们可以把“个人电脑”比作“一台电话”,那么“IP地址”就相当于“电话号码”,而Internet中的路由器,就相当于电信局的“程控式交换机”。IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a

    2022年6月24日
    31
  • flash8中文版从入门到精通_重发:6月23日福利丨PROE教学视频零基础入门到精通实用视频教程自学全套…「建议收藏」

    flash8中文版从入门到精通_重发:6月23日福利丨PROE教学视频零基础入门到精通实用视频教程自学全套…「建议收藏」点击上方蓝色字关注我们!小伙伴们,大家好,今天来给小伙伴们分享我们的新一期的视频教程,本期的视频教程我们主要分享的是PROE的自学视频,什么是PROE呢?下面我们进入今天的主题吧什么是PROE?proe是美国PTC公司旗下的产品baiPro/Engineer软件的简称。duPro/E(Pro/Engineer操作软件)是美国参数技术zhi公司(ParametricTechnology…

    2022年8月29日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号