• 数据传输---json


    {键:值}
    
    {"firstName":"Bill" , "lastName":"Gates"} 标准板式
    
    值是一个数组的json:
    
    外层键是employees,值是数组。数组里面又是json
    
    {"employees": [{ "firstName":"Bill" , "lastName":"Gates" },
            { "firstName":"George" , "lastName":"Bush" },
            { "firstName":"Thomas" , "lastName":"Carter" }
    
            ]
    
    }
    
    json的官网 www.json.org
    
    常用的是google-gson版本的。包名是 gson-2.2.4.jar
    
    解析json
    
    JsonParser jp = new JsonParser(); //创建json解析器
    
    JsonObject object = (JsonObject) jp.parse(new FileReader("test.json"));//读取文件中数据转为jsonObject对象
    
    System.out.println("查出来的是:"+object.get("liu").getAsString());//在jsonObject对象中根据键获取值,第一个get获取到的是jsonElement。第二个get把它转换为string
    
    System.out.println("查出来的是:"+object.get("bools").getAsBoolean());//获取布尔
    
    JsonArray array = object.get("employees").getAsJsonArray();//获取转换为json数组
    
    for(int i=0;i<array.size();i++){//因为employees值是数组,数组中又是json对象。遍历数组
    
    System.out.println("----");
    
    JsonObject subobject = array.get(i).getAsJsonObject();//获得数组中的第一个元素,并将转为jsonObjec对象
    
    System.out.println(subobject.get("firstName").getAsString());//同上根据键获取jsonObjec对应的值
    
    System.out.println(subobject.get("lastName").getAsString());
    
    }
    
    生成json
    
    JsonObject jo = new JsonObject(); //创建JsonObject对象
    
    //jo.add(property, value); //是在jo中添加一个JsonObject才用
    
    jo.addProperty("cat", "it");//在jo对象中添加一个普通的键值对
    
    JsonArray array = new JsonArray(); //创建一个JsonArray数组对象
    
    JsonObject lan1 = new JsonObject(); //创建JsonObject对象lan1
    
    lan1.addProperty("id", 1);
    
    lan1.addProperty("name", "java");
    
    lan1.addProperty("ide", "Eclipse");
    
    array.add(lan1); //把lan1对象添加到array数组中
    
    JsonObject lan2 = new JsonObject(); //创建JsonObject对象lan2
    
    lan2.addProperty("id", 2);
    
    lan2.addProperty("name", "swift");
    
    lan2.addProperty("ide", "xcode");        
    
    array.add(lan2); //把lan2对象添加到array数组中
    
    jo.add("langs", array);//把array数组添加到jo对象中,array是一个json所以用add
    
    jo.addProperty("bool", true);//在jo对象中添加一个普通的键值对
    
    JsonObject lan3 = new JsonObject(); //创建JsonObject对象lan3
    
    lan3.addProperty("id", 3);
    
    lan3.addProperty("name", "c#");
    
    lan3.addProperty("ide", "visual studio");        
    
    jo.add("lan3", lan3); //同上lan3是一个json对象所以用add添加
    
    System.out.println(jo.toString());//将json对象转换为字符串。可以直接拷贝控制台输出的结果到文本中,也可这样直接传输
    
    
    
    阿里巴巴的json。Jar
    
    import com.alibaba.fastjson.JSON;
    
    public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
    public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
    public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean
    public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
    public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合
    public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
    public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
    public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。
    
     
    
    来自 <http://blog.csdn.net/glarystar/article/details/6654494>
    
     
    
    经典的:
    
    String sss = postMaiDian(time1, time2, page, pageDat);   //获得一个json字符串
    
    net.sf.json.JSONArray arry = net.sf.json.JSONArray.fromObject(sss);
    
    System.out.println("json字符串内容如下");
    
    System.out.println(arry);
    
    List<Map<String, String>> rsList = new ArrayList<Map<String, String>>();
    
    for (int i = 0; i < arry.size(); i++) {
    
    JSONObject jsonObject = arry.getJSONObject(i);
    
    Map<String, String> map = new HashMap<String, String>();
    
    for (Iterator<?> iter = jsonObject.keys(); iter.hasNext();) {
    
    String key = (String) iter.next();
    
    String value = jsonObject.get(key).toString();
    
    map.put(key, value);
    
    }
    
    rsList.add(map);
    
    }
    
    System.out.println(rsList.toString());
  • 相关阅读:
    信息分析与预测复习(其它资料)
    计算斐波那契分数序列前n项之和(n是某个常数,波那契分数序列为2/1,3/2,5/3,8/5,...)
    做男人难(转)
    牢记这一刻
    二分法求方程2x34x2+3x=0在(10,10)附近的根
    求水仙花数
    iOS面试题
    【转】【翻译】在Entity Framework 4.0中使用 Repository 和 Unit of Work 模式
    【转】【翻译】实体框架中的POCO支持 第三部分 POCO的变动跟踪
    【转】EntityFramework之领域驱动设计实践:总结
  • 原文地址:https://www.cnblogs.com/sanhuan/p/4757505.html
Copyright © 2020-2023  润新知