json初识

这篇博客介绍了JSON作为轻量级数据交换格式的基本结构,包括对象和数组的表示方式,并展示了Java中使用传统方式、Jackson、Gson和FastJSON四个库进行JSON与Java实体类之间的转换。同时对比了各种方式的性能和特点。
摘要由CSDN通过智能技术生成

简介: JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式。

json的格式

1.对象格式
一个对象, 由一个大括号表示.
括号中 描述对象的属性 . 通过键值对来描述对象的属性(可以理解为, 大括号中, 包含的是一个个的键值对.)
格式:
键与值之间使用冒号连接, 多个键值对之间使用逗号分隔.
键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解 析.)
键值对的值, 可以是JS中的任意类型的数据
2.数组格式
在JSON格式中可以与对象互相嵌套 [元素1,元素2…]
例如:

 {            
  "name":"金苹果""info":"种苹果"       
 } 
 { 
                "name":"伟杰老师",                
                "age":18,               
                 "pengyou":["张三","李四","王二","麻子",
                 {                          
                 "name":"野马老师",                            
                 "info":"像匹野马一样狂奔在技术钻研的道路上"                       
                  }],                
                  "heihei":{                    
                  "name":"大长刀",                    
                  "length":"40m"                
                  }            
}

Java解析JSON的方式

实体类:

public class Person {
        private String name;    
        private String sex;    
        private int age;    
        public Person(String name, String sex, int age) {        
                this.name = name;        t
                his.sex = sex;        
                this.age = age;    
        }    
        public String getName() {        
                return name;    
        }    
        public String getSex() {        
                return sex;    
        }    
        public int getAge() {        
                return age;    
        }    
        @Override    
        public String toString() {        
        return "Person{name='" + name + '\'' + ", sex='" + sex + '\'' + ", age=" +                    age + '}';    
        }
}

1.由实体类生成Json字符串:

public Person getPerson(){    
     return new Person("张三", "男", 25);
}
@Test
public void EntityToJson(){
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("name", getPerson().getName());    
    jsonObject.put("sex", getPerson().getSex());    
    jsonObject.put("age", getPerson().getAge());      
    System.out.println(jsonObject.toString());
 }

由Json字符串生成实体类:

@Test
public void JsonToEntity(){
    String jsonString = "{\"sex\":\"男\",\"name\":\"张三\",\"age\":25}";    JSONObject jsonObject = new JSONObject(jsonString);    
    Person person = new Person(jsonObject.get("name").toString(),jsonObject.get("sex").toString(),Integer.valueOf(jsonObject.get("age").toString()));    
    System.out.println(person.toString());
}

2)利用Jackson方式:
由实体类生成Json字符串:

@Test
public void EntityToJson() throws IOException {
    Person person = new Person("张三", "男", 25);
    ObjectMapper objectMapper = new ObjectMapper();
    String jsonString = objectMapper.writeValueAsString(person);    
    System.out.println(jsonString);
 }

由Json字符串生成实体类:

@Test
public void JsonToEntity() throws IOException {
    ObjectMapper objectMapper = new ObjectMapper();
    String jsonString = "{\"name\":\"张三\",\"sex\":\"男\",\"age\":25}";
    Person person = objectMapper.readValue(jsonString, Person.class);    
    System.out.println(person);
}

(3)利用GSON方式:
由实体类生成Json字符串:
转换JSON字符串的步骤:
1. 引入JAR包
2.在需要转换JSON字符串的位置编写如下代码即可:
String json = new Gson().toJson(要转换的对象);

@Test
public void EntityToJson(){
    Person person = new Person("张三", "男", 25);
    Gson gson = new Gson();    
    String jsonString = gson.toJson(person);    
    System.out.println(jsonString);
}

由Json字符串生成实体类:

  1. 引入JAR包
  2. 在需要转换Java对象的位置, 编写如下代码:
    对象 = new Gson().fromJson(JSON字符串,对象类型.class);
@Test
 public void JsonToEntity(){
     String jsonString = "{\"name\":\"张三\",\"sex\":\"男\",\"age\":25}";
     Gson gson = new Gson();
    Person person = gson.fromJson(jsonString, Person.class);    
    System.out.println(person.toString());
}

(4)利用FastJSON方式
由实体类生成Json字符串:
转换JSON字符串的步骤:

  1. 引入JAR包
  2. 在需要转换JSON字符串的位置编写如下代码即可:
    String json=JSON.toJSONString(要转换的对象);
@Test
public void EntityToJson(){
        Person person = new Person("张三", "男", 25);
        Object jsonString = JSON.toJSON(person);    
        System.out.println(jsonString.toString());
}

由Json字符串生成实体类:

  1. 引入JAR包
  2. 在需要转换Java对象的位置, 编写如下代码:
    类型 对象名=JSON.parseObject(JSON字符串, 类型.class); 或 List<类型> list=JSON.parseArray(JSON字符串,类型.class);
@Test
public void JsonToEntity(){
    String jsonString = "{\"name\":\"张三\",\"sex\":\"男\",\"age\":25}";
    Person person = JSON.parseObject(jsonString, Person.class);    
    System.out.println(person.toString());
}

方式的比较:

类型简介
传统Json方式:复杂的Json数据转换成实体类存在缺陷,性能和功能不够完善
Jackson方式:复杂的Json数据转换成实体类存在缺陷,性能和功能优于传统方式
Gson方式:功能方面在几种方式中最优,性能方面不如Jackson方式
FastJson方式:复杂的实体类转换成Json数据存在缺陷,解析json的速度优于其他方式
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下 4载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值