zoukankan      html  css  js  c++  java
  • json-smart 使用示例(推荐fastjson)

    摘自:http://www.cnblogs.com/zhenjing/p/json-smart.html

    地址:https://github.com/alibaba/fastjson

    =======================================================

    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();
    
        }
    }

    解析文件示例

    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.*;
    
    import java.lang.StringBuffer;
    
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.IOException;
    
    /*
     * Home page: http://code.google.com/p/json-smart/
     * 
     * compiler:  javac -cp json-smart-1.1.1.jar JsonTool.java
     *
     * Run:       java -cp ./:json-smart-1.1.1.jar JsonTool
     *
     */
    
    
    public class JsonTool {
    
        //1. String <==> JsonObject
        public static void ParseData(String data) throws ParseException {
            System.out.println("=======decode=======");
    
            // s="{"key":"Value"}";
            Object obj  = JSONValue.parseStrict(data);
            JSONObject obj3 = (JSONObject)obj;
            
            System.out.println(obj3.get("data"));
            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 main(String[] args) throws Exception {
    
            if( args.length < 1) {
                    System.out.println("Usage: JsonTool file");
                    System.exit(-1);
            }
    
            String file = args[0];
            System.out.println(file);
    
            StringBuffer strBuffer = new StringBuffer();
            InputStreamReader inputReader = null;
            BufferedReader bufferReader = null;
            OutputStream outputStream = null;
            try
            {
                InputStream inputStream = new FileInputStream(file);
                inputReader = new InputStreamReader(inputStream);
                bufferReader = new BufferedReader(inputReader);
                
                // 读取一行
                String line = null;
                    
                while ((line = bufferReader.readLine()) != null)
                {
                    strBuffer.append(line);
                } 
                
            }
            catch (IOException e)
            {
                System.out.println(e.getMessage());
            }
            finally
            {
                // OtherUtilAPI.closeAll(outputStream, bufferReader, inputReader);
            }
        
            //System.out.println(strBuffer.toString());
            //System.out.println("
    ");
    
            ParseData(strBuffer.toString());
        }
    }
  • 相关阅读:
    关于使用READ TABLE语句
    excel中CTRL+E的用法
    SAP查找用户的登录记录及修改记录
    PI接口开发之调java WS接口(转)
    ALV-TREE -转
    LOOP AT GROUP语法熟悉
    SAP库龄表(转)
    SAP RANG语法
    数据对象与数据类型
    Nginx 安装、配置及相关介绍
  • 原文地址:https://www.cnblogs.com/GaoAnLee/p/7305833.html
Copyright © 2011-2022 走看看