zoukankan      html  css  js  c++  java
  • json 构造和解析

    目录:

          (1)引入jar包;

      (2)json的构造;

      (3)json的解析;

          (4)遍历未知key。

    (1)java对json的处理,可借助org.json.jar.

    <!-- https://mvnrepository.com/artifact/org.json/json -->
    <dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20090211</version>
    </dependency>

    (2)json的构造

    //construct json and output it
    public String constructJson() throws JSONException {

    JSONObject map1 = new JSONObject();
    map1.put("name", "张三");
    map1.put("password", "123");
    System.out.println("map1 --->" + map1);

    JSONObject map2 = new JSONObject();
    map2.put("name", "李四");
    map2.put("password", "456");
    System.out.println("map2 --->" + map2);

    JSONArray list = new JSONArray();
    list.put(map1);
    list.put(map2);
    System.out.println("jsonMembers --->" + list);

    JSONObject json=new JSONObject();
    json.put("users", list);
    System.out.println("json --->" + json);

    return json.toString();
    }

    public static void main(String args[]) throws Exception{
    RoomTool rt = new RoomTool();
    rt.constructJson();
    }
    输出如下:

    map1 --->{"password":"123","name":"张三"}
    map2 --->{"password":"456","name":"李四"}
    jsonMembers --->[{"password":"123","name":"张三"},{"password":"456","name":"李四"}]
    json --->{"users":[{"password":"123","name":"张三"},{"password":"456","name":"李四"}]}

     

    (3)json的解析


    //construct json from String and resolve it.
    public String jsonTest2() throws JSONException{
    String jsonString=jsonTest();
    JSONObject json= new JSONObject(jsonString);
    JSONArray jsonArray=json.getJSONArray("users");
    String loginNames="loginname list:";
    for(int i=0;i<jsonArray.length();i++){
    JSONObject user=(JSONObject) jsonArray.get(i);
    String userName=(String) user.get("loginname");
    if(i==jsonArray.length()-1){
    loginNames+=userName;
    }else{
    loginNames+=userName+",";
    }
    }
    System.out.println("loginNames --->" + loginNames);
    return loginNames;
    }

    public  static void main(String args[]) throws Exception{
    RoomTool tool = new RoomTool();
    tool.jsonTest2();
    }
    输出如下:loginNames --->loginname list:zhangfan,zf

    (4)遍历未知key
    public void parseJson(String jsonString) throws JSONException{
    JSONObject json= new JSONObject(jsonString);
    Iterator it = json.keys();
    while(it.hasNext()){
    String key = it.next().toString();
    int values = Integer.parseInt((String)json.get(key));
    System.out.println(key + "--->" + values);
    }
    }

    public static void main(String args[]) throws Exception{
    RoomTool tool = new RoomTool();
    tool.parseJson("{"1":"0","2":"30","3":"15","4":"15","5":"20","6":"20"}");
    }

    输出:

        1--->0
        2--->30
        3--->15
        4--->15
        5--->20
        6--->20

    Json对象与Json字符串的转化、JSON字符串与Java对象的转换

     

    一.Json对象与Json字符串的转化

    1.jQuery插件支持的转换方式

      $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象

    2.浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器:

      JSON.stringify(obj)将JSON转为字符串。JSON.parse(string)将字符串转为JSON格式;

    var a={"name":"tom","sex":"男","age":"24"}; 
    var b='{"name":"Mike","sex":"女","age":"29"}'; 
    var aToStr=JSON.stringify(a); 
    var bToObj=JSON.parse(b); 
    alert(typeof(aToStr));  //string 
    alert(typeof(bToObj));//object

    3.Javascript支持的转换方式: 
    eval('(' + jsonstr + ')'); //可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号 
    注:ie8(兼容模式),ie7和ie6也可以使用eval()将字符串转为JSON对象,但不推荐这些方式,这种方式不安全eval会执行json串中的表达式。

    4.JSON官方的转换方式: 
    http://www.json.org/提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法; 
    可以在https://github.com/douglascrockford/JSON-js上获取到这个js,一般现在用json2.js。

    二、JSON 字符串 与 java 对象的转换

    1. 把java 对象列表转换为json对象数组,并转为字符串

        JSONArray array = JSONArray.fromObject(list);
        String jsonstr = array.toString();

    2. 把java对象转换成json对象,并转化为字符串

      JSONObject object = JSONObject.fromObject(user);
      Log4jInit.ysulogger.debug(object.toString());

    3.把JSON字符串转换为JAVA 对象数组
      JSONArray json = JSONArray.fromObject(userStr);//userStr是json字符串
      List<User> users= (List<User>)JSONArray.toCollection(json, User.class);


    4.把JSON字符串转换为JAVA 对象

      JSONObject jsonobject = JSONObject.fromObject(jsonStr);
      User user= (User)JSONObject.toBean(object,User.class);
           

     
     
     
  • 相关阅读:
    OpenCV鼠标事件
    相对复杂一些的爬虫,针对拒绝爬虫的网站
    CSS
    JS
    JS
    JS
    JS
    TypeScript
    微信小程序
    微信小程序
  • 原文地址:https://www.cnblogs.com/ctaixw/p/6137768.html
Copyright © 2011-2022 走看看