Json体验之——Json-lib使用浅谈(二)

这一部分主要讲解使用json-lib包将java数据类型转换成json的数据类型,也就是java——>json。



首先介绍JSONSerializer,它使用i简单干净的接口方式将任何java与json直接进行转换,java——>json,使用JSONSerializer.toJSON(),json——>java 使用toJava()。

1     // 将string转换成json
2     String s1 = new String("{1:1}");
3     String s2 = new String("[1,1]");
4     JSONObject json1 = (JSONObject) JSONSerializer.toJSON(s1);
5     System.out.println("——用JSONSerializer将string转换json——" + json1);
6     JSONArray json2 = (JSONArray) JSONSerializer.toJSON(s2);
7     System.out.println("——用JSONSerializer将string转换jsonArray——" + json2);

显示结果

1 ——用JSONSerializer将string转换json——{"1":1}
2 ——用JSONSerializer将string转换jsonArray——[1,1]


将java数组和集合转换成json

 1     // Working with arrays and collections,——>json
 2     boolean[] booleanArray = new boolean[] { true, false, true };
 3     JSONArray fromObject = JSONArray.fromObject(booleanArray);
 4     System.out.println(fromObject);
 5
 6     List list = new ArrayList();
 7     list.add("first");
 8     list.add("second");
 9     JSONArray fromObject2 = JSONArray.fromObject(list);
10     System.out.println(fromObject2);    

结果

1 [true,false,true]
2 ["first","second"]


将beans和map转换成json

 1       // Working with objects
 2         // From Beans & Maps toJSON
 3         Map map = new HashMap();
 4         map.put("name", "json");
 5         map.put("bool", Boolean.TRUE);
 6         map.put("int", new Integer(1));
 7         map.put("arr", new String[] { "a", "b" });
 8         map.put("func", "function(i){ return this.arr[i]; }");
 9
10         JSONObject jsonObject2 = JSONObject.fromObject(map);
11         System.out.println("——map转换json——\n" + jsonObject2);

结果

1 ——map转换json——
2 {"arr":["a","b"],"int":1,"name":"json","func":function(i){ return this.arr[i]; },"bool":true}

beans转换先自定义对象Mybean,

 1 public class MyBean {
 2
 3     private String name = "json";
 4     private int pojoId = 1;
 5     private char[] options = new char[] { ‘a‘, ‘f‘ };
 6     private String func1 = "function(i){ return this.options[i]; }";
 7     private JSONFunction func2 = new JSONFunction(new String[] { "i" },
 8             "return this.options[i];");
 9      //自定义类型
10     private MyBean2 mybean2 = new MyBean2("1", "mybean");
11
12     public String getName() {
13         return name;
14     }
15     public void setName(String name) {
16         this.name = name;
17     }
18     public int getPojoId() {
19         return pojoId;
20     }
21     public void setPojoId(int pojoId) {
22         this.pojoId = pojoId;
23     }
24     public char[] getOptions() {
25         return options;
26     }
27     public void setOptions(char[] options) {
28         this.options = options;
29     }
30     public String getFunc1() {
31         return func1;
32     }
33     public void setFunc1(String func1) {
34         this.func1 = func1;
35     }
36     public JSONFunction getFunc2() {
37         return func2;
38     }
39     public void setFunc2(JSONFunction func2) {
40         this.func2 = func2;
41     }
42     public MyBean2 getMybean2() {
43         return mybean2;
44     }
45     public void setMybean2(MyBean2 mybean2) {
46         this.mybean2 = mybean2;
47     }
48 }

Mybean中包含自定义对象Mybean2

public class MyBean2 {
    private String id;
    private String name;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public MyBean2(String id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
    public MyBean2() {
        super();
    }
}

将beans转换为json

1     // 自定义MyBean对象中包含MyBean2对象,所以bean——>Json,无论是否自定义对象,都可以转换json格式
2         JSONObject jsonObject3 = JSONObject.fromObject(new MyBean());
3         System.out.println("——beans转换json——\n" + jsonObject3);

结果

1 ——beans转换json——
2 {"name":"json","mybean2":{"id":"1","name":"mybean"},"pojoId":1,"func1":function(i){ return this.options[i]; },"func2":function(i){ return this.options[i]; },"options":["a","f"]}


总结:将java对象转换成json,比较简单,若是beans或maps用JSONObject.fromObject() ,若是array或collections,用JSONArray.fromObject()。

时间: 2024-10-13 17:21:18

Json体验之——Json-lib使用浅谈(二)的相关文章

浅谈二维中的树状数组与线段树

一般来说,树状数组可以实现的东西线段树均可胜任,实际应用中也是如此.但是在二维中,线段树的操作变得太过复杂,更新子矩阵时第一维的lazy标记更是麻烦到不行. 但是树状数组在某些询问中又无法胜任,如最值等不符合区间减法的询问.此时就需要根据线段树与树状数组的优缺点来选择了. 做一下基本操作的对比,如下图. 因为线段树为自上向下更新,从而可以使用lazy标记使得矩阵的更新变的高校起来,几个不足就是代码长,代码长和代码长. 对于将将矩阵内元素变为某个值,因为树状数组自下向上更新,且要满足区间加法等限制

Json体验之——Json结构简介

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd

关于自动化学习浅谈二

什么是自动化测试?自动化测试的原理是什么?常用哪些工具?常用哪些框架?工具的原理又是什么?自动化如何学习?自动化的优点与缺点是什么?价值在哪里?学习自动化测试要了解与掌握哪些内容?哪些项目适合自动化测试呢? 想学习自动化测试首先得明白以上一些问题,不然学着只能知其然,不知其所以然. 1,什么是自动化测试?优缺点是什么?价值在哪里? 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程. 从它的定义中是不是所有人为驱动的测试都可以转化为机器执行呢? 答案是否定的.这也就带出了自动化的局限性.

Servlet浅谈(二)

1.forward(请求的转发)和redirect(重定向) 目的:都是为了把一个Servlet的功能,拆分到多个Servlet中,便于后续代码的维护. a.forward(请求转发) (1).如何在多个Servlet之间跳转 request.getRequestDispatcher("/url-pattern").forward(request,response). ps.路径只用填写web.xml中配置的sevlet路径即可 (2).request作用域传递数据 存数据: requ

浅谈二维线段树

一.定义 二维线段树,即用线段树维护一个矩阵 有两种实现方式: 1.原一维线段树的基础上,每一个节点都是一个线段树,代表第二维 下图是一个4*4矩阵 2.四分法转化为一维线段树 两种方法的空间复杂度都是n*n*log^2 第一种方法单次操作的时间复杂度是log^2,第二种方法最差可以退化到n 一维线段树的标记思想,在第一种方法中,可以用于二维线段树的第二维,不可以用于二维线段树的第一维 第二种方法本质上是四叉的一维线段树, 在此只介绍第一种方法 二.基本操作 1.单点修改+矩阵查询 单次访问一个

salesforce lightning零基础学习(九) Aura Js 浅谈二: Event篇

上一篇介绍了Aura Framework中 Component类的部分方法,本篇将要介绍Event常用的方法. 1. setParam (String key , Object value):设置事件的param,此项设置不会修改已经被触发的事件.我们在创建事件的时候可以同时声明attribute,在我们fire事件以前,可以对这些attribute设置值,其中key为attribute的name,value部分即为attribute的value. 2.setParams (Object con

浅谈二维线段树的几种不同的写法

目录 参考文献 参考文献 暴力写法 二叉树 四叉树 树套树写法1 参考文献 四叉树 树套树 以及和zhoufangyuan巨佬的激烈♂讨论 参考文献 大家好我口糊大师又回来了. 给你一个\(n*n\)矩阵,然后让你支持两种操作,对子矩阵加值和对子矩阵查和. 暴力写法 对于每一行开一个线段树,然后跑,时间复杂度\(n^2logn\). 优点: 代码较短 较为灵活 缺点: 常数大 容易卡 二叉树 我们对于平面如此处理,一层维护横切,一层竖切. 当然,这个做法也是\(n^2logn\)的,卡法就是任意

浅谈 JSON.stringify 方法

用过 json 的应该都知道,把一个对象通过 stringify 之后提交给后台或者存储在 Storage 里是很常用的手段.但是 IE6-7 下没有 JSON 对象,所以要借助 json2.js 来实现. 今天我们来简单介绍下 stringify 方法的一些正确使用姿势吧.当然,让高手们贱笑了,本文只是分享一些方法给新手朋友们. var data = [ {name: "王尼玛", sex:1, age: 30}, {name: "王尼美", sex:0, age

浅谈 JSON 那些被转义的字符们

其实,之前我一直以为 JSON 会把 ASCII 可显示字符以外的统统转义为 Unicode,直到有一次我用 JSON.stringify 才发现,其实是 PHP 为我们想的太周到了. 我以前是一位 phper,所以处理 json 只要 json_encode 就可以把数组转为 json 数据了,非常方便.可以看到,默认就是把所有 ASCII 可显示字符以外的统统转义为 Unicode. 这样做有什么好处呢?大家在调用 jsonp 接口或者调用js文件的时候,由于文件编码不同导致的乱码问题,应该