Json介绍

目录

首先声明另一篇不错的文章 点击---> 别人不错的文章

json介绍

一、使用fastjson使用JSON案例

1. JSONObject对应json对象,该类中的主要方法

2.JSONArray对应json对象数组,看其源码发现该类主要继承自json,并且实现了list接口,它里面主要方法有

3. JSON类中主要方法,观察发现该类当中方法主要是实现了JSONObject对象、JSONArray对象数组、javabean对象、json字符串之间的相互转换,最后的数据获取还是要通过JSONObject和JSONArray来实现

  2. json字符串和js对象之间的相互转换

3.自己练习 编写测试类

二、使用net.sf.json使用JSON案例    

1. 把一个map或者java对象转换成jsonobject字符串


首先声明另一篇不错的文章 点击---> 别人不错的文章

json介绍

    json是一种数据转换格式,是用来保存javaScript对象的一种方式,json使用文本来表示一个js对象,本质是一个字符串。json目的就是把数据转换成字符串,然后进行网络传输,因为json数据简洁数据量少,所以现在大多使用json进行传输数据。

我们主要讲fastjson的使用,首先应该在Java工程中导入对应的fastjson.jar包,

一、使用fastjson使用JSON案例

fastjson.jar包原始下载地址:GitHub - alibaba/fastjson: A fast JSON parser/generator for Java.

点击页面中的download即可下载最新的包

   

 用的是fastjson.jar包

    <dependency>
         <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.75</version>
    </dependency>

     fastjson下面主要有三个类,jsonJSONObject处理json中对象的类,JSONArray处理json中对象数组的类,JSON代表JSONObject和JSONArray的转化。它们之间的关系是JSONObject和JSONArray继承JSON

1. JSONObject对应json对象,该类中的主要方法

   

 看JSONObject源码发现该类主要继承自JSON,还实现Map接口,而JSON对象当中的数据都是以键值队存在,所以底层操作都是由map实现的,

总结:JSONObject对应JSON对象,通过各种形式的get()方法获取json对象中的数据,然后通过size()、isEmpty()方法判断元素个数和判断元素是否为空,本质都是通过实现map接口并调用接口中的方法实现的

2.JSONArray对应json对象数组,看其源码发现该类主要继承自json,并且实现了list接口,它里面主要方法有

 

首先明确一点JsonArray对象数组中存放的是一个一个json对象 ,所以该类中的方法直接用于操作json对象,比如add()、remove()、containsALL()方法对应json对象的添加、删除、判断(用来判断list1的元素是否都在list2中存在)其内部主要是实现了list接口并调用list接口里的方法实现的

总结:与JSONObject一样,JSONArray里面也有很多get()方法,不过不常用经常使用的是getJSONObject(int  index)方法,该方法表示可以获取json数组对象中指定位置的JSONObject对象,配合size()方法,可用于循环遍历JSONArray对象数组中的各个JSONObject对象,然后可以通过JSONObject对象当中的get()放啊得到json数据

3. JSON类中主要方法,观察发现该类当中方法主要是实现了JSONObject对象、JSONArray对象数组、javabean对象、json字符串之间的相互转换,最后的数据获取还是要通过JSONObject和JSONArray来实现

 

 JSON类当中toJSONString()方法,可以实现将JSON对象装换成json字符串和javabean对象转换成json字符串

JSON类当中parseObject()方法,可以将json字符串转换成json对象或者javabean对象;该方法经过重载之后可以将json字符串转换成javabean对象(json字符串与javaBean之间的转换可以使用 TypeReference<T> 这个类,也可以使用Class这个类)

    Student stu1=JSON.parseObject(jsonstr,new TypeReference<Student>(){});

    Student stu1=JSON.parseObject(jsonstr,Student.class);

JSON类当中JSONArray()方法,可以将json字符串转换成json数组对象或者list<T>

JSON类当中toJSON()方法,可以将javabean对象转换成json对象,用的比较少

JSON类当中toJaveObject()方法,可以将json对象转换成javabean对象,用的比较少

  对象表示为键值对,数据由逗号分隔      {"name":"a","age":"18"}

      花括号保存对象

      方括号保存数组    {"name":"中国","province":[  {"name":"黑龙江","city":["哈尔滨", "大庆"]},                                                                                        {"name":"台湾","city":["台北", "高雄"]}   ]}

  2. json字符串和js对象之间的相互转换

     var  js={a:'hello',b:'world'};                                          //这是一个js对象 

     var json='{"a":"hello","b":"world"}'  ;                            //这是json字符串

     要实现从JSON字符串转换为JS对象,使用 JSON.parse() 方法 

      var log=JSON.parse('{"a":"hello","b":"world"}' );       //输出{a:'hello',b:'world'}

       在fastjson中是这么做的

       JSONObject obj=JSON.parseObject(js);            //将json字符串转换为json对象

      要实现从JS对象转换为JSON字符串,使用 JSON.stringify() 方法  

       var log=JSON.stringify({a:'hello',b:'world'});              //输出'{"a":"hello","b":"world"}' 

   1)json字符串和对象间的转换   

                JSON.parseObject(string参数)----》字符串转成对象

                对象.toJsonString()----》对象转换成字符串

   2) ison字符串和数组间的转换

                JSON.parseArray(字符串名称,类名.class)---->将字符串里的内容与类里属性一一对应存入到list集合中

                 JSON.toJsonString()

3.自己练习 编写测试类


package jsonTest; 
public class Student {
    
    private String name;
    private int age;
    
    public Student() {
    }
    public Student(String name,int age){
        this.name=name;
        this.age=age;
    }
    public void setName(String name){
        this.name=name;
    }
    public String getName(){
        return name;
    }
    public void setAge(int age){
        this.age=age;
    }
    public int getAge(){
        return age;
    }
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return "student [name="+name+" , "+"age="+age+"]";
    }
}

编写测试

 package jsonTest; 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;

public class MyJson {
    public static void main(String[] args) {
        
        List<Student> list=new ArrayList<>();
        Student student=new Student("小花",23);
        Student student12=new Student("小名", 88);
        list.add(student);
        list.add(student12);
        System.out.println("******* javabean对象转换成json字符串 *******");
        String str1=JSON.toJSONString(student);
        System.out.println(str1);
        System.out.println(JSON.toJSONString(list));

     
     
        
        System.out.println("****** json字符串转换成javabean对象*******");
        //Student stu1=JSON.parseObject(str1,new TypeReference<Student>(){});
        Student stu1=JSON.parseObject(str1,Student.class);
        System.out.println(stu1);
       
       
        System.out.println("**javaBean对象转换成jsonObject对象并获取key对应的value值");
        JSONObject jsonObject1=(JSONObject)JSON.toJSON(student);
        System.out.println(jsonObject1.getString("age"));
        
        
        System.out.println("******jsonObject对象转换成javabean对象******");
        Student student2=JSON.toJavaObject(jsonObject1, Student.class);
        System.out.println(student2);
      
        
        System.out.println("*******javabean对象转换成jsonArray对象******");
        List<Student> stulist=new ArrayList<>();
        for(int i=0;i<5;i++){
            stulist.add(new Student("student"+i, i));  
        }
        JSONArray jsonArrays=(JSONArray)JSON.toJSON(stulist);
        for(int i=0;i<jsonArrays.size();i++){
        System.out.println(jsonArrays.getJSONObject(i));
        }
        
        System.out.println("*****jsonArry数组对象转换成 javalist******");
        List<Student> myList=new ArrayList<>();
        for(int i=0;i<jsonArrays.size();i++){
        Student student3=JSON.toJavaObject(jsonArrays.getJSONObject(i), Student.class);
            myList.add(student3);
        }
        for(Student stu:myList){
            System.out.println(stu);
        }
    
        System.out.println("*****jsonObject 对象转换成jsonString字符串*****");
        String str4=JSON.toJSONString(jsonObject1);
        System.out.println(str4);
      
        
        System.out.println("*jsonString字符串转换成jsonObject 对象并获取对应的value值");
        JSONObject jso1=JSON.parseObject(str1);
        System.out.println(jso1.getString("name"));
       
        
        System.out.println("*****jsonString字符串转换成jsonArray对象数组*****");
        JSONArray jArray=JSON.parseArray(JSON.toJSONString(stulist));
        for(int i=0;i<jArray.size();i++){
        System.out.println(jArray.getJSONObject(i));
        }
    }
}

     

二、使用net.sf.json使用JSON案例    

     一篇不错的博客:net.sf.json用法

      需要添加jar包

<dependency>
    <groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>

getXXX方法如果为null或者为空,会抛出JSONException异常。通过getXXX可以获取指定类型的Value而不需要强制转换,较为方便,

JSONObject同时提供了optXXX的方法获取name对应的value值

optXXX的方法与getXXX最大的区别是,optXXX方法可以指定默认值。

1. 把一个map或者java对象转换成jsonobject字符串

使用JSONObject.fromObject()方法可以装换成json字符串

//将map转换成json字符串

Map map = new HashMap();
map.put( "name", "json" );
map.put( "bool", Boolean.TRUE );
map.put( "int", new Integer(1) );
map.put( "arr", new String[]{"a","b"} );
map.put( "func", "function(i){ return this.arr[i]; }" );
JSONObject jObject = JSONObject.fromObject( map );
System.out.println( jObject );

//将java对象转换成json
class MyBean{
        private String name = "json";
        private int pojoId = 1;
        private char[] options = new char[]{'a','f'};
        private String func1 = "function(i){ return this.options[i]; }";
        private JSONFunction func2 = new JSONFunction(new String[]{"i"},"return this.options[i];");
}
    JSONObject jsonObject = JSONObject.fromObject( new MyBean() );
    System.out.println( jsonObject );
 

常用方法详解:

put()方法---向jsonObject对象里面添加键值对

optJSONobject()方法-----根据key,获取jsonObject对象当中key对应的的jsonObject对象

getJSONobject()方法-----根据key,获取jsonObject对象当中key对应的的jsonObject对象,如果key不存在会报错

optJSONArray()方法---根据key值从jsonObject对象中获取一个key对应的JSONArray的对象

getJSONArray()方法---根据key值从jsonObject对象中获取一个key对应的JSONArray的对象,如果key不存在会报错

optString()方法---根据key值从jsonObject对象中获取一个key对应的String字符串

getString()方法---根据key值从jsonObject对象中获取一个key对应的String字符串,如果key不存在会报错

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值