0

0

JSON-lib包对json的构造和方法的使用

零下一度

零下一度

发布时间:2017-06-27 10:34:26

|

1499人浏览过

|

来源于php中文网

原创

json-lib包(最关键的两个类分别是jsonobject和jsonarray)完成对json的构造和一些基本方法的使用。

二者区别:

        ①JSONObject构造的字符串是键值对形式(key:value),多个键值对间以英文逗号连接;

        ②JSONArray构造的字符串是数组形式([array1,array2,...])。

需要使用的包下载链接: 

一、JSONObject的使用。

(1)JSON字符串的两种构造方法:

①使用Java对象;②使用Map集合。

步骤一:首先新建Java工程,导入依赖包;

步骤二:建立两个测试类:

Teacher.java

package com.snnu.json;import java.util.List;public class Teacher {private String name;private String sex;private int age;private List myTool;    
    public Teacher(){
        
    }    public Teacher(String name,String sex,int age,List myTool){this.name = name;this.sex = sex;this.age = age;this.myTool = myTool;
    }public String getName() {return name;
    }public void setName(String name) {this.name = name;
    }public String getSex() {return sex;
    }public void setSex(String sex) {this.sex = sex;
    }public int getAge() {return age;
    }public void setAge(int age) {this.age = age;
    }public List getMyTool() {return myTool;
    }public void setMyTool(List myTool) {this.myTool = myTool;
    }

}

Transport.java

package com.snnu.json;public class Transport {    private String name;private float price;    public Transport(){
        
    }    public Transport(String name,float price){this.name = name;this.price = price;
    }    
    public String getName() {return name;
    }public void setName(String name) {this.name = name;
    }public float getPrice() {return price;
    }public void setPrice(float price) {this.price = price;
    }
    
    
    
    
}

步骤三:写main方法

       方式一:

package com.snnu.json;import java.util.ArrayList;import java.util.List;import net.sf.json.JSONObject;public class Demo_creajsonFromObject {// 利用java对象生成json字符串public JSONObject createJsonFromObject(Object object) {return JSONObject.fromObject(object);
    }public static void main(String[] args) {// TODO Auto-generated method stubDemo_creajsonFromObject demo = new Demo_creajsonFromObject();

        Teacher t = new Teacher();
        t.setName("张三");
        t.setSex("男");
        t.setAge(21);

        Transport bike = new Transport("自行车", 267);
        Transport motorcycle = new Transport("摩托车", 3267);
        Transport car = new Transport("小汽车", 100000);
        List tools = new ArrayList();
        tools.add(bike);
        tools.add(motorcycle);
        tools.add(car);

        t.setMyTool(tools);

        JSONObject ob = demo.createJsonFromObject(t);

        System.out.println(ob);

    }

}

       生成的json字符串为:

{
    "age": 21,
    "myTool": [
        {
            "name": "自行车",
            "price": 267
        },
        {
            "name": "摩托车",
            "price": 3267
        },
        {
            "name": "小汽车",
            "price": 100000
        }
    ],
    "name": "张三",
    "sex": "男"
}

   

Makingware 社区版
Makingware 社区版

Makingware社区版是基于Magento的电子商务平台。Makingware针对国内市场,对Magento进行了改进和调整,包括中文化,账户管理,支付方式,地址格式,物流支持,结账流程等等。Makingware旨在打造一个功能强大,高度灵活的企业级电子商务平台。 Makingware 社区版 1.6.5 更新说明改进:全新改造的后台界面,合并选项,调整选项位置,隐藏极少使用的选项,极大提高后

下载

 

 方式二:

package com.snnu.json;import java.util.HashMap;import java.util.Map;import net.sf.json.JSONObject;public class Demo_creajsonFromMap {//使用map集合生成json字符串public JSONObject createJsonFromMap(Map map){
        JSONObject jsob=new JSONObject();
        jsob.putAll(map);return jsob;
    }    
    public static void main(String[] args) {// TODO Auto-generated method stubDemo_creajsonFromMap demo=new Demo_creajsonFromMap();
        
        Map mmap=new HashMap();
        mmap.put("name", "张三");
        mmap.put("sex", "男");
        mmap.put("age", "21");
        
        JSONObject ob=demo.createJsonFromMap(mmap);
        System.out.println(ob);
        
    }

}

生成的json字符串为:

{"sex": "男","name": "张三","age": "21"}

(2)JSONObject的三个常用方法举例。

package com.snnu.json;import java.util.ArrayList;import java.util.List;import net.sf.json.JSONObject;public class MethodTest {//put方法:在一个json中插入一个节点,若该节点已存在,则该节点的值将会被替换public JSONObject testPut(){
        JSONObject jo1=new JSONObject();
        
        jo1.put("a", "1");
        jo1.put("b", "2");
        jo1.put("c", "3");
        
        Transport bike=new Transport("bike",200);
        jo1.put("d", bike);
        
        List list=new ArrayList();
        list.add("one");
        list.add("two");
        list.add("three");
        jo1.put("e", list);
        
        jo1.put("a", "100");        return jo1;
    }    
    //accumulate方法:可以在同一个key下累积值,若key对应的value有值,则以数组形式累积;否则相当于put方法public JSONObject testAccumulate(){
        JSONObject jo2=new JSONObject();
        
        jo2.put("a", "1");
        jo2.put("b", "2");
        jo2.put("c", "3");
        jo2.accumulate("c", "300");
        
        Transport bike=new Transport("bike",200);
        jo2.accumulate("c", bike);
        
        List list=new ArrayList();
        list.add("one");
        list.add("two");
        list.add("three");
        jo2.accumulate("c", list);
        
        jo2.put("d", "4");        return jo2;
    }    
    //与put方法基本一致public JSONObject testElement(){
        JSONObject jo3=new JSONObject();
        
        jo3.put("a", "1");
        jo3.put("b", "2");
        jo3.put("c", "3");
        jo3.element("c", "300");        
        return jo3;
    }    
    
    public static void main(String[] args) {// TODO Auto-generated method stubMethodTest test=new MethodTest();
        System.out.println("JSONObject的put方法使用"+test.testPut());
        System.out.println("JSONObject的accumulate方法使用"+test.testAccumulate());
        System.out.println("JSONObject的element方法使用"+test.testElement());
        
    }

}

 

    ①put方法输出json字符串格式化结果为:

{"a": "100","b": "2","c": "3","d": {"name": "bike","price": 200},"e": ["one","two","three"]
}

    ②accumulate方法输出json字符串格式化结果为:

{"a": "1","b": "2","c": ["3","300",
        {"name": "bike","price": 200},
        ["one","two","three"]
    ],"d": "4"}

    ③element方法输出json字符串格式化结果为:

{"a": "1","b": "2","c": "300"}

 二、JSONArray的使用

(1)基本使用:

package com.snnu.json;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class demo_JsonArray {    
    public JSONObject testJsonArray(){
        JSONObject ob=new JSONObject();
        
        JSONArray ja=new JSONArray();
        ja.add("1");
        ja.add("2");
        ja.add("3");
        ja.add("4");
        ja.add("5");
        
        ob.put("array", ja);        return ob;
    }    
    public static void main(String[] args) {// TODO Auto-generated method stubdemo_JsonArray djs=new demo_JsonArray();
        System.out.println("JSONArray的使用:"+djs.testJsonArray());
        
    }

}

对输出后的字符串进行格式化:

{"array": ["1","2","3","4","5"]
}

三、综合实例

package com.snnu.json;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class demo_testJson {    
    
    public JSONObject test(){
        
        JSONObject jo=new JSONObject();
        jo.put("name", "张三");
        jo.put("sex","f");
        jo.put("age",21);
        
        Transport bike=new Transport("bike",250);
        jo.put("extra", bike);
        Transport car=new Transport("car",10000);
        jo.accumulate("extra", car);
        Transport motor=new Transport("motor",3000);
        jo.accumulate("extra", motor);
        
        System.out.println(jo);        //根据key值(为extra)取对应的valueString value=jo.getString("extra");
        System.out.println(value);        //将字符串转化为JSONArrayJSONArray jsar=JSONArray.fromObject(value);
        String str_2=String.valueOf(jsar.get(1));
        System.out.println(str_2);        //将字符串转化为JSONObjectJSONObject jsob=JSONObject.fromObject(str_2);
        System.out.println("名称:"+jsob.getString("name"));
        System.out.println("价钱:"+jsob.getString("price"));
        
        System.out.println("-------------------------------分界线-------------------------------------------");        return jo;
        
    }public static void main(String[] args) {// TODO Auto-generated method stubdemo_testJson dtj=new demo_testJson();
        System.out.println("综合测试:"+dtj.test());
    }

}

输出结果为:

{"name":"张三","sex":"f","age":21,"extra":[{"name":"bike","price":250},{"name":"car","price":10000},{"name":"motor","price":3000}]}
[{"name":"bike","price":250},{"name":"car","price":10000},{"name":"motor","price":3000}]
{"name":"car","price":10000}
名称:car
价钱:10000
-------------------------------分界线-------------------------------------------综合测试:{"name":"张三","sex":"f","age":21,"extra":[{"name":"bike","price":250},{"name":"car","price":10000},{"name":"motor","price":3000}]}

 

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

65

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

121

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

33

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

19

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

85

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

19

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

11

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

47

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 3.8万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.3万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号