net.sf.json------json解析

在测试终端支付时,发现net..sf.json.JSONArray;报红,引入了pom,项目里是jar包下载,不想复制移动一个个add to path,想用依赖的办法

但还是报红色,原因是自动下载的包pom中没有指定版本号

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

如果是gradle,引入:

compile 'net.sf.json-lib:json-lib:2.4:jdk15'

 

搞定,开始解析json

看一下项目中的代码(解析见下)

@SuppressWarnings("all")
    public static <T> List<T> json2List(String jsonstr,Class<T> cls){
        JSONArray ja = JSONArray.fromObject(jsonstr);
        List<T> list = JSONArray.toList(ja, cls);
        return list;
    }

    @SuppressWarnings("all")
    public static <T> T json2Obj(String jsonstr,Class<T> cls){
        JSONObject jo = JSONObject.fromObject(jsonstr);
        T obj = (T)JSONObject.toBean(jo, cls);
        return obj;
    }

    public static String obj2json(Object obj){
        return JSONObject.fromObject(obj).toString();
    }

    public static String array2json(Object obj){
        return JSONArray.fromObject(obj).toString();
    }

    public static <T1,T2> List<T2> convertMap2List(Map<T1,T2> map){
        if(map==null) return null;
        return new ArrayList<T2>(map.values());
    }

 

首先我们知道

JSON 和 JS 对象互转

要实现从JSON字符串转换为JS对象,使用 JSON.parse() 方法:
1
var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}
要实现从JS对象转换为JSON字符串,使用 JSON.stringify() 方法:
1
var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}'

 

 

而今天我们要用的就是一个json的帮助包之一的net.sf.json-,这些包其实都是类似的,帮我们封装了方法,直接使用

  其中jSONArray是一个一个加进去的;
         JSONObject是一对一对加进去的;

 1.JSONObject

  可以理解为是这个包里面的json类型是object就是最初始化的封装,并且给你封装了方法

  

package com.itlwc.test;  
  
import net.sf.json.JSONArray;  
import net.sf.json.JSONObject;  
  
public class Test {  
    public static void main(String[] args) {  
        // 创建JSONObject  
        JSONObject jsonObject = new JSONObject();  
        jsonObject.put("username", "lwc");  
        jsonObject.put("password", "123");  
        // 打印:1  
        System.out.println(jsonObject);  
  
        // 增加属性,打印:2  
        jsonObject.element("sex", "男");  
        System.out.println(jsonObject);  
          
        // 根据key返回,打印:3  
        System.out.println(jsonObject.get("sex"));  
  
        // 判读输出对象的类型  
        boolean isArray = jsonObject.isArray();  
        boolean isEmpty = jsonObject.isEmpty();  
        boolean isNullObject = jsonObject.isNullObject();  
        // 打印:4  
        System.out.println("是否数组:" + isArray + " 是否空:" + isEmpty + " 是否空对象:"  
                + isNullObject);  
          
        // 把JSONArray增加到JSONObject中  
        JSONArray jsonArray = new JSONArray();  
        jsonArray.add(0, "lwc");  
        jsonArray.add(1, "nxj");  
        // 开始增加  
        jsonObject.element("student", jsonArray);  
        // 打印:5  
        System.out.println(jsonObject);  
    }  
}  
/* 
打印结果 
    {"username":"lwc","password":"123"} 
    {"username":"lwc","password":"123","sex":"男"} 
    男 
    是否为数组:false 是否为空:false 是否为空对象:false 
    {"username":"lwc","password":"123","sex":"男","student":["lwc","nxj"]} 
*/  

 

  

2.JSONArray(一般是一个一个加JSONObject)

  json数组的封装

  

package com.itlwc.test;  
  
import net.sf.json.JSONArray;  
import net.sf.json.JSONObject;  
  
public class Test {  
    public static void main(String[] args) {  
        //创建JSONArray  
        JSONArray jsonArray = new JSONArray();  
        jsonArray.add(0, "lwc");     
        jsonArray.add(1, "nxj");  
        jsonArray.element("mxj");  
        //打印:1  
        System.out.println(jsonArray);  
          
        //根据下标返回,打印:2  
        System.out.println(jsonArray.get(0));  
          
        //根据下标设置新值,打印:3  
        jsonArray.set(0, "itlwc");  
        System.out.println(jsonArray);  
          
        //把JSONObject放入到JSONArray中  
        JSONObject jsonObject = new JSONObject();  
        jsonObject.put("username", "lwc");  
        jsonObject.put("password", "123");  
        //开始增加,打印:4  
        jsonArray.add(jsonObject);  
        System.out.println(jsonArray);  
          
        //遍历,打印:5  
        for(int i=0;i<jsonArray.size();i++){  
            System.out.print(jsonArray.get(i)+"\t");  
        }  
    }  
}  
/* 
打印结果 
    ["lwc","nxj","mxj"] 
    lwc 
    ["itlwc","nxj","mxj"] 
    ["itlwc","nxj","mxj",{"username":"lwc","password":"123"}] 
    itlwc   nxj mxj {"username":"lwc","password":"123"} 

   3.JavaBean与json字符串互转 

package com.itlwc.test;  
  
import net.sf.json.JSONObject;  
  
import com.itlwc.entity.Student;  
  
public class Test {  
    public static void main(String[] args) {  
        // JavaBean对象转json字符串  
        Student stu1 = new Student("lwc", "111111");  
        JSONObject jsonObject = JSONObject.fromObject(stu1);  
        System.out.println(jsonObject);  
  
        // json字符串转JavaBean  
        String jsondata = "{\"password\":\"111111\",\"username\":\"lwc\"}";  
        JSONObject jsonObject1 = JSONObject.fromObject(jsondata);  
        Student stu2 = (Student) JSONObject.toBean(jsonObject1, Student.class);  
        System.out.println(stu2);  
    }  
}  
/* 
打印结果: 
    {"password":"111111","username":"lwc"} 
    用户: lwc 密码:111111 
*/  

  4.List与json字符串互转

package com.itlwc.test;  
  
import java.util.ArrayList;  
import java.util.List;  
  
import net.sf.json.JSONArray;  
import net.sf.json.JSONObject;  
  
import com.itlwc.entity.Student;  
  
public class Test {  
    public static void main(String[] args) {  
        // List转json字符串  
        List list = new ArrayList();  
        list.add(new Student("lwc", "111111"));  
        list.add(new Student("nxj", "222222"));  
        JSONArray jsonArray = JSONArray.fromObject(list);  
        System.out.println(jsonArray);  
  
        // json字符串转List  
        List list1 = new ArrayList();  
        String jsondata = "[{\"password\":\"111111\",\"username\":\"lwc\"},{\"password\":\"222222\",\"username\":\"nxj\"}]";  
        JSONArray jsonArray1 = JSONArray.fromObject(jsondata);  
        for (int i = 0; i < jsonArray1.size(); i++) {  
            JSONObject jsonObject2 = jsonArray1.getJSONObject(i);  
            Student stu2 = (Student) JSONObject.toBean(jsonObject2,  
                    Student.class);  
            list1.add(stu2);  
        }  
        System.out.println(list1);  
    }  
}  
/* 
打印结果: 
    [{"password":"111111","username":"lwc"},{"password":"222222","username":"nxj"}] 
    [用户: lwc 密码:111111, 用户: nxj 密码:222222] 

  5.Map与json字符串互转

package com.itlwc.test;  
  
import java.util.HashMap;  
import java.util.Iterator;  
import java.util.Map;  
import java.util.Set;  
  
import net.sf.json.JSONObject;  
  
import com.itlwc.entity.Student;  
  
public class Test {  
    public static void main(String[] args) {  
        // Map转json字符串  
        Map map = new HashMap();  
        map.put("1", new Student("lwc", "111111"));  
        map.put("2", new Student("nxj", "222222"));  
        JSONObject jsonMap = JSONObject.fromObject(map);  
        System.out.println(jsonMap);  
  
        // json字符串转Map  
        String jsondata = "{\"2\":{\"password\":\"222222\",\"username\":\"nxj\"},\"1\":{\"password\":\"111111\",\"username\":\"lwc\"}}";  
        Map map1 = (Map) JSONObject.fromObject(jsondata);  
        Set set = map1.keySet();  
        Iterator ite = set.iterator();  
        while (ite.hasNext()) {  
            String key = (String) ite.next();  
            JSONObject jsonObject = JSONObject.fromObject(map1.get(key));  
            Student stu = (Student) JSONObject  
                    .toBean(jsonObject, Student.class);  
            System.out.println(key + " " + stu);  
        }  
  
    }  
}  
/* 
打印结果:  
    {"2":{"password":"222222","username":"nxj"},"1":{"password":"111111","username":"lwc"}} 
    2 用户: nxj 密码:222222 
    1 用户: lwc 密码:111111 

  

  6.JSONArray与List互转

package com.itlwc.test;  
  
import java.util.ArrayList;  
import java.util.Iterator;  
import java.util.List;  
  
import net.sf.json.JSONArray;  
import net.sf.json.JsonConfig;  
  
import com.itlwc.entity.Student;  
  
public class Test {  
    public static void main(String[] args) {  
        //List转型JSONArray  
        List<Student> list = new ArrayList<Student>();    
        list.add(new Student("lwc", "111111"));  
        list.add(new Student("nxj", "222222"));   
        JSONArray jsonArray = JSONArray.fromObject(list);  
        System.out.println(jsonArray.toString());  
          
        //JSONArray转型List  
        List<Student> list2 = JSONArray.toList(jsonArray, new Student(), new JsonConfig());  
        Iterator<Student> ite =  list2.iterator();  
        while(ite.hasNext()){  
            Student stu =ite.next();  
            System.out.println(stu);  
        }  
    }  
}  
/* 
打印结果 
    [{"password":"111111","username":"lwc"},{"password":"222222","username":"nxj"}] 
    用户: lwc 密码:111111 
    用户: nxj 密码:222222 

 7.JSONArray与数组互转

  

package com.itlwc.test;  
  
import net.sf.json.JSONArray;  
  
public class Test {  
    public static void main(String[] args) {  
        // Java数组转JSONArray  
        boolean[] boolArray = new boolean[] { true, false, true };  
        JSONArray jsonArray = JSONArray.fromObject(boolArray);  
        System.out.println(jsonArray.toString());  
  
        // JSONArray转Java数组  
        Object obj[] = jsonArray.toArray();  
        for (Object o : obj) {  
            System.out.print(o + " ");  
        }  
    }  
}  
/* 
打印结果 : 
    [true,false,true] 
    true false true  

8.XML与JSON互转

需要导入xom-1.1.jar

package com.itlwc.test;  
  
import net.sf.json.JSON;  
import net.sf.json.JSONObject;  
import net.sf.json.xml.XMLSerializer;  
  
public class Test {  
    public static void main(String[] args) throws Exception {  
        // XML转JSON  
        String xml = "<root>" + "<name type='type'>zhaipuhong</name>"  
                + "<gender>male</gender>" + "<birthday>" + "<year>1970</year>"  
                + "<month>12</month>" + "<day>17</day>" + "</birthday>"  
                + "</root>";  
        XMLSerializer xmlSerializer = new XMLSerializer();  
        JSON json = xmlSerializer.read(xml);  
        System.out.println(json.toString(2));  
  
        // JSON转XML  
        String jsondata = "{\"root\":{" + "\"name\":\"zhaipuhong\","  
                + "\"gender\":\"male\"," + "\"birthday\":{"  
                + "\"year\":\"1970\"," + "\"month\":\"12\"," + "\"day\":\"17\""  
                + "}" + "}" + "}";  
        JSONObject jsonObject = JSONObject.fromObject(jsondata);  
        String xmlstr = new XMLSerializer().write(jsonObject);  
        System.out.println(xmlstr);  
    }  
}  
/* 
打印结果: 
    { 
      "name": "zhaipuhong", 
      "gender": "male", 
      "birthday":   { 
        "year": "1970", 
        "month": "12", 
        "day": "17" 
      } 
    } 
    <?xml version="1.0" encoding="UTF-8"?> 
    <o> 
        <root class="object"> 
            <birthday class="object"> 
                <day type="string">17</day> 
                <month type="string">12</month> 
                <year type="string">1970</year> 
            </birthday> 
            <gender type="string">male</gender> 
            <name type="string">zhaipuhong</name> 
        </root> 
    </o> 
*/  

 

posted @ 2020-06-11 09:36  To_Yang  阅读(1842)  评论(0编辑  收藏  举报