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/ 
    未注明转载的文章,版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    HTML5新标签与特性---多媒体
    HTML5新标签与特性---新表单+新属性----综合案例1
    字体图标引入到HTML---复制用代码
    字体图标网站---常用汇总
    滑动门出现的背景---实例微信导航栏(a盒子里面包span盒子,文字写在span里)
    【Web前端开发】---前端培训roadmap
    清除浮动的4种方法
    进度更新---Responsive Web Design Certification (300 hours)
    Python实现一个桌面版的翻译工具【新手必学】
    Python爬虫老是被封的解决方法【面试必问】
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3247129.html
Copyright © 2011-2022 走看看