zoukankan      html  css  js  c++  java
  • java关于json的一些问题

    今天重写代码的时候,发现了一个异常:java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntime

    问题很快就解决了,是因为少了common-lang-2.6.jar。为什么会少了common-lang-2.6.jar,这是因为前一阵子想用 common-lang3包替换common-lang-2.6.jar。

     

    百度了下,发现net.sf.json需要这么多:

    1.commons-beanutils-1.9.1.jar
    2.commons-collections-3.2.1.jar
    3.commons-lang-2.6.jar
    4.commons-logging-1.2.jar
    5.ezmorph-1.0.6.jar

    首先太麻烦了!其次commons-lang的最近一次更新是2011年。

    从2011年之后,其它各种jsond实现包有许多更新(或者新出现),譬如:

    1. google的gson
    2. 阿里的 fastJson
    3. jackson
    • jackSon的,主要是做json和object的映射,使用起来有点麻烦,如果不想做对象映射,那么可以不怎么考虑,当然效率也不错
    • fastJson,总体不错,有许多简单的静态类实现
    • gson,也还可以。

    网络上,不怎么建议用net.sf.json,因为效率,没有确认过。以前的项目有用,估计是因为生成JSONobject,JSONArray比较方便。

    ---

    考虑到各种因素,我已经不再让小组成员使用net.sf.json,可以使用fastjson和gson来替代,一个项目尽量使用一个json方案。

    以后,需要使用object生成JSONArray的时候,只需要如下即可(红色字体部分):

    package study.base.json.jackson;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.serializer.SerializerFeature;
    
    public class TestJackSon {
    
        public static void main(String[] args) {
    
            List<Map<String, Object>> lm = new ArrayList<Map<String, Object>>();
            for (int i = 0; i < 3; i++) {
                Map<String, Object> map = new HashMap<String, Object>();
                map.put("no", Integer.valueOf(i));
                map.put("age", 12);
                map.put("name", "luzhifei");
                lm.add(map);
            }
            JSONArray o = (JSONArray) JSONArray.toJSON(lm);
    
            System.out.println(o.toString(SerializerFeature.PrettyFormat));
    
        }
    }

    结果如下:

    [
        {
            "name":"luzhifei",
            "no":0,
            "age":12
        },
        {
            "name":"luzhifei",
            "no":1,
            "age":12
        },
        {
            "name":"luzhifei",
            "no":2,
            "age":12
        }
    ]

     

     

  • 相关阅读:
    select应用于read函数 超时非阻塞方式
    取文本索引所执向的值(简单)
    linux c函数指针的应用
    解决vsftp无法启动问题(转)
    Could not chdir to home directory /home/USER: Permission denied
    sscanf和正则表达式
    存储过程重置SEQUENCE值从新开始。
    Signal ()函数详细介绍 Linux函数(转)
    linux 环境NTP配置与开机自启动(转)
    linux下iconv()函数的用法(转载并修改)
  • 原文地址:https://www.cnblogs.com/lzfhope/p/12512893.html
Copyright © 2011-2022 走看看