• 简单了解json以及使用google json 2.2


    json简介:

    JSON: JavaScript对象表示法(JavaScript Object Notation)

    JSON是存储和交换信息的语法。

      JSON是轻量级的文本交互格式

      JSON独立于语言和平台

      JSON具有自我描述性能,更易于理解

    JSON与XML

    类似XML,比XML更小、更快、更易解析

      没有结束标签

      更短

      读写的速度更快

      使用数组

      不使用保留字

    JSON的语法是JavaScript对象表示语法的子集

      数据在名称/值对中

      数据由逗号分隔

      花括号保存对象

      方括号保存数组

    JSON的值可以是:数字、字符串(在双引号中)、逻辑值、数组(在方括号中)、对象(在花括号中)、null

    JSON的对象表示:

    {"firstName":"John","lastName":"Doe"}

    JSON的数组表示:

    ["hello",2,false,new Date()]

    对象中使用数组:

    {

      "employees":[

        {"firstName":"John","lastName":"Doe"},

        {"firstName":"Anna","lastName":"Smith"}

      ]

    }

    使用google-gson-2.2操作json:

    读取json:

    package com.json;
    
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    
    import com.google.gson.JsonArray;
    import com.google.gson.JsonElement;
    import com.google.gson.JsonIOException;
    import com.google.gson.JsonObject;
    import com.google.gson.JsonParser;
    import com.google.gson.JsonSyntaxException;
    
    
    public class ReadJson {
        public static void main(String[] args){
            JsonParser parse=new JsonParser();
            JsonObject json;
            try {
                /**
            * 先解析得到json变量,使用JsonParse的parse方法
    * 读取的话先读取整个json对象,为JsonObject类型,然后可以直接使用toString方法将该json字符串形式输出,也可以使用getAsXXX()获取该json对应的类型的转换值 * 读取jsonObject对象的属性值的话使用 JsonObject.get(String key)方法获取属性值,得到的是一个JsonElement类型,JsonElement变量是JsonObject对象的父类,也使用getAsXXX()转换得到你想要的类型。如果属性值是对象类型的话,将获取到的JsonElement强转到JsonObject类型即可正常使用 */ //json = (JsonObject) parse.parse(new FileReader("C:\Users\Administrator.PMIMP83HWNIKWOV\Workspaces\MyEclipse 9\TextWeb\WebRoot\json\langagejson")); json= (JsonObject)parse.parse(new FileReader("WebRoot/json/langagejson"));//使用同项目的文件夹里的文件使用相对路径 //System.out.println(json); //System.out.println(json.toString()); //System.out.println(json.getAsString());//这样直接书写会报错,找不到对应方法 System.out.println(json.get("name").getAsString()); System.out.println(json.get("type").getAsString()); JsonArray prop=json.get("prop").getAsJsonArray(); for(int i=0;i<prop.size();i++){ JsonObject ele=(JsonObject) prop.get(i); System.out.print(ele.get("id").getAsString()+" "); System.out.print(ele.get("name").getAsString()+" "); System.out.println(ele.get("ide").getAsString()); } } catch (JsonIOException e) { e.printStackTrace(); } catch (JsonSyntaxException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } } }

    书写json:

    package com.json;
    
    import com.google.gson.JsonArray;
    import com.google.gson.JsonObject;
    
    public class CreateJson {
    
        /**
         * @param args
         * 发现JsonArray是JsonElement的子类
         * 首先新建JsonObject对象,也就是json对象
         * 然后给json对象增加键值对,也就是属性名和属性值,使用addProperty可以为属性值为基本数据类型的属性增加属性名和值,如果要增加其他类型的属性,使用add(String name,JsonElement ele)方法
         * 其他的也就和xml操作差不多了
         */
        public static void main(String[] args) {
            JsonObject document=new JsonObject();
            document.addProperty("name", "languages");
            document.addProperty("type", "it");
            
            JsonArray arr=new JsonArray();
            JsonObject pro1=new JsonObject();
            pro1.addProperty("id", 1);
            pro1.addProperty("name", "java");
            pro1.addProperty("ide", "eclipes");
            JsonObject pro2=new JsonObject();
            pro2.addProperty("id", 2);
            pro2.addProperty("name", "swift");
            pro2.addProperty("ide", "xcode");
            JsonObject pro3=new JsonObject();
            pro3.addProperty("id", 3);
            pro3.addProperty("name", "c#");
            pro3.addProperty("ide", "c-free");
            arr.add(pro1);
            arr.add(pro2);
            arr.add(pro3);
            
            document.add("prop", arr);
            
            System.out.println(document);
        }
    
    }

    将xml转换成为json:

    通过map类型对象进行桥梁作用

    package com.json;
    
    import java.io.ByteArrayInputStream;  
    import java.io.File;  
    import java.io.InputStream;  
    import java.util.HashMap;  
    import java.util.LinkedList;  
    import java.util.List;  
    import java.util.Map;  
    
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    import com.google.gson.JsonElement;
    import com.google.gson.JsonObject;
    import com.google.gson.JsonParser;
      
    
    public class Xml2JsonUtil {  
        /** 
         * 转换一个xml格式的字符串到json格式 
         *  
         * @param xml 
         *            xml格式的字符串 
         * @return 成功返回json 格式的字符串;失败反回null 
         */  
        @SuppressWarnings("unchecked")  
        public static  String xml2JSON(String xml) {  
            JsonObject obj = new JsonObject();  
            try {  
                InputStream is = new ByteArrayInputStream(xml.getBytes("utf-8"));  
                SAXReader sb = new SAXReader();  
                Document doc = sb.read(is);  
                Element root = doc.getRootElement();  
                obj.add(root.getName(), iterateElement(root));       
                return obj.toString();  
            } catch (Exception e) {  
                e.printStackTrace();  
                return null;  
            }  
        }  
      
        /** 
         * 转换一个xml格式的字符串到json格式 
         *  
         * @param file 
         *            java.io.File实例是一个有效的xml文件 
         * @return 成功反回json 格式的字符串;失败反回null 
         */  
        @SuppressWarnings("unchecked")  
        public static String xml2JSON(File file) {  
            JsonObject obj = new JsonObject();  
            try {  
                SAXReader sb = new SAXReader();  
                Document doc = sb.read(file);  
                Element root = doc.getRootElement();  
                obj.add(root.getName(), iterateElement(root));  
                return obj.toString();  
            } catch (Exception e) {  
                e.printStackTrace();  
                return null;  
            }  
        }  
      
        /** 
         * 一个迭代方法 
         *  
         * @param element 
         *            : org.jdom.Element 
         * @return java.util.Map 实例 
         */  
        
        private static JsonElement  iterateElement(Element element) {  
            List jiedian = element.elements();  
            Element et = null;  
            Map obj = new HashMap();  
            List list = null;  
            for (int i = 0; i < jiedian.size(); i++) {  
                list = new LinkedList();  
                et = (Element) jiedian.get(i);  
                if (et.getTextTrim().equals("")) {  
                    if (et.elements().size() == 0)  
                        continue;  
                    if (obj.containsKey(et.getName())) {  
                        list = (List) obj.get(et.getName());  
                    }  
                    list.add(iterateElement(et));  
                    obj.put(et.getName(), list);  
                } else {  
                    if (obj.containsKey(et.getName())) {  
                        list = (List) obj.get(et.getName());  
                    }  
                    list.add(et.getTextTrim());  
                    obj.put(et.getName(), list);  
                }  
            }  
            JsonParser jp=new JsonParser();
            Gson gson=new GsonBuilder().create();
            String ss=gson.toJson(obj);
            JsonElement je=jp.parse(ss);
            return je;  
        }  
      
        // 测试  
        public static void main(String[] args) {  
            System.out.println(  Xml2JsonUtil.xml2JSON("<MapSet>"  
                    + "<MapGroup id='Sheboygan'>" + "<Map>"  
                    + "<Type>MapGuideddddddd</Type>"  
                    + "<SingleTile>true</SingleTile>" + "<Extension>"  
                    + "<ResourceId>ddd</ResourceId>" + "</Extension>" + "</Map>"  
                    + "<Map>" + "<Type>ccc</Type>" + "<SingleTile>ggg</SingleTile>"  
                    + "<Extension>" + "<ResourceId>aaa</ResourceId>"  
                    + "</Extension>" + "</Map>" + "<Extension />" + "</MapGroup>"  
                    + "<ddd>" + "33333333" + "</ddd>" + "<ddd>" + "444" + "</ddd>"  
                    + "</MapSet>"));  
        }  
    }  
    View Code
  • 相关阅读:
    Lucene学习总结之七:Lucene搜索过程解析 2014-06-25 14:23 863人阅读 评论(1) 收藏
    Lucene学习总结之五:Lucene段合并(merge)过程分析 2014-06-25 14:20 537人阅读 评论(0) 收藏
    Lucene学习总结之六:Lucene打分公式的数学推导 2014-06-25 14:20 384人阅读 评论(0) 收藏
    Lucene学习总结之四:Lucene索引过程分析 2014-06-25 14:18 884人阅读 评论(0) 收藏
    Lucene学习总结之三:Lucene的索引文件格式(1) 2014-06-25 14:15 1124人阅读 评论(0) 收藏
    Lucene学习总结之二:Lucene的总体架构 2014-06-25 14:12 622人阅读 评论(0) 收藏
    Lucene学习总结之一:全文检索的基本原理 2014-06-25 14:11 666人阅读 评论(0) 收藏
    解决Eclipse中文乱码 分类: B1_JAVA 2014-06-25 11:23 336人阅读 评论(0) 收藏
    【Lucene4.8教程之五】Luke 2014-06-24 15:12 1092人阅读 评论(0) 收藏
    【Tika基础教程之一】Tika基础教程
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/5510236.html
Copyright © 2020-2023  润新知