zoukankan      html  css  js  c++  java
  • json-smart 使用示例

    json-smart 使用示例

    json是一种通用的数据格式。相比与protocal buffer、thrift等数据格式,json具有可读性强(文本)、天生具备良好的扩展性(随意增减字段)等优良特点,利用json作为通讯协议,开发效率更高。当然相较于二进制协议,文本更耗带宽。

    json和HTTP协议都是基于文本的,天生的一对。面对多终端的未来,使用Json和HTTP作为前端架构的基础将成为开发趋势。

    简介

    json-smart官方主页:https://code.google.com/p/json-smart/

    特性:https://code.google.com/p/json-smart/wiki/FeaturesTests

    性能评测:https://code.google.com/p/json-smart/wiki/Benchmark

    Json-smart-API:  http://www.jarvana.com/jarvana/view/net/minidev/json-smart/1.0.9/json-smart-1.0.9-javadoc.jar!/net/minidev/json/package-summary.html

    javadoc: https://github.com/u2waremanager/maven-repository/blob/master/net/minidev/json-smart/1.1.1/json-smart-1.1.1-javadoc.jar

    使用示例

    复制代码
    import net.minidev.json.JSONObject;
    import net.minidev.json.JSONValue;
    import net.minidev.json.JSONArray;
    import net.minidev.json.JSONStyle;
    import net.minidev.json.parser.ParseException;
    
    import java.io.UnsupportedEncodingException;
    import java.util.*;
    
    /*
     * Home page: http://code.google.com/p/json-smart/
     * 
     * compiler:  javac -cp json-smart-1.1.1.jar JsonSmartTest.java
     *
     * Run:       java -cp ./:json-smart-1.1.1.jar JsonSmartTest 
     *
     */
    
    
    public class JsonSmartTest {
    
        //1. String <==> JsonObject
        public static void DecodingTest() throws ParseException {
            System.out.println("=======decode=======");
    
            String s="[0,{'1':{'2':{'3':{'4':[5,{'6':7}]}}}}]";
            Object obj=JSONValue.parse(s);
            JSONArray array=(JSONArray)obj;
            System.out.println("======the 2nd element of array======");
            System.out.println(array.get(1));
            System.out.println();
    
            JSONObject obj2=(JSONObject)array.get(1);
            System.out.println("======field "1"==========");
            System.out.println(obj2.get("1"));
    
            s="{}";
            obj=JSONValue.parse(s);
            System.out.println(obj);                
    
            s="{"key":"Value"}";
            // JSONValue.parseStrict()
            // can be use to be sure that the input is wellformed
            obj=JSONValue.parseStrict(s);
            JSONObject obj3=(JSONObject)obj;
            System.out.println("====== Object content ======");
            System.out.println(obj3.get("key"));
            System.out.println();
    
        }
    
        public static void EncodingTest() {
            System.out.println("=======EncodingTest=======");
    
            // Json Object is an HashMap<String, Object> extends
            JSONObject obj = new JSONObject();
            obj.put("name", "foo");
            obj.put("num", 100);
            obj.put("balance", 1000.21);
            obj.put("is_vip", true);
            obj.put("nickname",null);
    
            System.out.println("Standard RFC4627 JSON");
            System.out.println(obj.toJSONString());
    
            System.out.println("Compacted JSON Value");
            System.out.println(obj.toJSONString(JSONStyle.MAX_COMPRESS));
    
            // if obj is an common map you can use:
    
            System.out.println("Standard RFC4627 JSON");
            System.out.println(JSONValue.toJSONString(obj));
    
            System.out.println("Compacted JSON Value");
            System.out.println(JSONValue.toJSONString(obj, JSONStyle.MAX_COMPRESS));   
    
        }
    
        public static void EncodingTest2() {
            System.out.println("=======EncodingTest2=======");
    
            // Json Object is an HashMap<String, Object> extends
            JSONObject obj = new JSONObject();
            obj.put("name", "foo");
            obj.put("num", 100);
            obj.put("balance", 1000.21);
            obj.put("is_vip", true);
            obj.put("nickname",null);
    
            //Output Compressed json
            Object value = obj;
            String com_json = JSONValue.toJSONString(value, JSONStyle.MAX_COMPRESS);
            String json = JSONValue.toJSONString(value, JSONStyle.NO_COMPRESS);
    
            System.out.println("Compacted JSON Value");
            System.out.println(com_json);
            System.out.println("From RFC4627 JSON String: " + JSONValue.compress(json));
            System.out.println("From Compacted JSON String: " + JSONValue.compress(com_json));
    
            System.out.println("Standard RFC4627 JSON Value");
            System.out.println(json);
            System.out.println("From RFC4627 JSON String: " + JSONValue.uncompress(json));
            System.out.println("From Compacted JSON String: " + JSONValue.uncompress(com_json));
    
            //from compress json string
            System.out.println("From compress json string(JSONObject)");
            Object obj2=JSONValue.parse(com_json);
            System.out.println(JSONValue.toJSONString(obj2, JSONStyle.NO_COMPRESS));
            System.out.println(JSONValue.toJSONString(obj2, JSONStyle.MAX_COMPRESS));
        }
    
    
        //2. Java Struct <==> JsonSmart object
        public class Person {
            String  name;
            int     age;
            boolean single;
            long    mobile;
    
            public String getName(){
                return this.name;
            }
            public void setName(String name) {
                this.name = name;
            }
            public int getAge() {
                return this.age;
            }
            public void setAge(int age) {
                this.age = age;
            }
            public boolean getSingle() {
                return this.single;
            }
            public void setSingle(boolean single) {
                this.single = single;
            }
            public long getMobile() {
                return mobile;
            }
            public void setMobile(long mobile) {
                this.mobile = mobile;
            }
        }
    
        public class JSONDomain {    // for convert struct <==> json
            public Object result = new JSONObject();
    
            public Object getResult() {
                return result;
            }
            public void setResult(Object result) { 
                this.result = result;
            }
        }
    
        public void Struct2JsonObject() {
            System.out.println("========Struct2JsonObject=======");
    
            Person person = new Person();
            person.setName("json smart");
            person.setAge(13);
            person.setMobile(20130808);
    
            Person person2 = new Person();
            person2.setName("test");
            person2.setAge(123);
            person2.setMobile(888666);
    
            List<Person> array = new ArrayList<Person>();
            array.add(person);
            array.add(person2);
    
            //1. struct <==> JsonObject
            JSONObject obj = new JSONObject();
            //obj = (Object)person;  // compiler error!
            // way 1:
            JSONDomain data = new JSONDomain();   // for convert
            data.setResult(person);
            // obj = (JSONObject)data.getResult(); // run error: ClassCastException 
            obj.put("person", data.getResult());
            System.out.println(JSONValue.toJSONString(obj));
    
            // way 2:
            obj.put("person", array.get(1));
            System.out.println(JSONValue.toJSONString(obj));
    
    
            //2. Container <==> JsonObject
            JSONArray jsonArray = new JSONArray();
            jsonArray.add(person);
            jsonArray.add(person2);
            JSONObject result = new JSONObject();
            result.put("persons", jsonArray);
            System.out.println(JSONValue.toJSONString(result));
        }
    
        //3. JsonSmartSerializationTest
        public static Map<String, Object> testBytes2Map(byte[] bytes) {
            Map<String, Object> map = null;
            try {
                map = (Map<String, Object>) JSONValue.parseStrict((new String(bytes, "UTF-8")));
            } catch (ParseException e) {
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            return map;
        }
    
        // JsonSmartSerializationTest
        public static byte[] testMap2Bytes(Map<String, Object> map) {
            String str = JSONObject.toJSONString(map);
            byte[] result = null;
            try {
                result = str.getBytes("UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            return result;
        }
    
        public static void main(String[] args) throws Exception {
            DecodingTest();
    
            EncodingTest();
    
            EncodingTest2();
    
    
            JsonSmartTest test = new JsonSmartTest();
            test.Struct2JsonObject();
    
        }
    }
    复制代码

    参考

    Java序列化与JSON序列化大比拼

    Java序列化与JSON序列化大比拼2

    多终端的前端架构选择


    作者:zhenjing.chen 
    出处:http://www.cnblogs.com/zhenjing/ 
    未注明转载的文章,版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    树链剖分 (模板) 洛谷3384
    ST表 (模板) 洛谷3865
    IOI 2005 River (洛谷 3354)
    IOI 2005 River (洛谷 3354)
    poj1094 Sorting It All Out
    poj1094 Sorting It All Out
    spfa(模板)
    HAOI 2006 受欢迎的牛 (洛谷2341)
    HAOI 2006 受欢迎的牛 (洛谷2341)
    洛谷1850(NOIp2016) 换教室——期望dp
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3247129.html
Copyright © 2011-2022 走看看