java吧 关注:1,250,214贴子:12,734,630

【教程】org.json解析json教程

只看楼主收藏回复

此贴一步一步教大家解析json
@祥仔smile
快来看


IP属地:黑龙江1楼2016-08-25 09:22回复
    第一步我们要先下载org.json


    IP属地:黑龙江2楼2016-08-25 09:22
    收起回复
      进入json官网
      点击java的第一项


      IP属地:黑龙江3楼2016-08-25 09:24
      回复


        IP属地:浙江来自Android客户端6楼2016-08-25 09:28
        回复
          吃鲸


          IP属地:北京来自Android客户端8楼2016-08-25 09:29
          回复
            新建一个普通java工程


            IP属地:黑龙江9楼2016-08-25 09:30
            回复

              现在应该是这样的


              IP属地:黑龙江14楼2016-08-25 09:43
              回复


                我们先测试一下读取


                IP属地:黑龙江17楼2016-08-25 09:54
                回复

                  创建解析方法


                  IP属地:黑龙江18楼2016-08-25 09:56
                  回复
                    总结一下
                    1.两个结构
                    JSON对象对应的类是JSONObejct
                    JSON数组对应的类是JSONArray
                    2.获取值方法
                    JSONObejct里有getXXX()方法,分别对应数据类型
                    JSONArray里有根据index获取方法,也有多种迭代方法
                    具体看https://github.com/stleary/JSON-java的项目说明


                    IP属地:黑龙江21楼2016-08-25 10:16
                    回复
                      package com.parsejson;
                      import java.io.IOException;
                      import java.io.InputStream;
                      import java.io.InputStreamReader;
                      import org.json.JSONArray;
                      import org.json.JSONObject;
                      public class Main {
                      public static void main(String[] args) throws IOException {
                      InputStream inputStream = Main.class.getClassLoader().getResourceAsStream("com/parsejson/test.json");
                      InputStreamReader reader = new InputStreamReader(inputStream, "UTF-8");
                      StringBuffer stringBuffer = new StringBuffer();
                      char[] chars = new char[50];
                      int count = 0;
                      while ((count = reader.read(chars)) != -1) {
                      stringBuffer.append(new String(chars, 0, count));
                      }
                      reader.close();
                      parseJSON(stringBuffer.toString());
                      }
                      private static void parseJSON(String json) {
                      /**
                      * { "glossary": { "title": "example glossary", "GlossDiv": { "title":
                      * "S", "GlossList": { "GlossEntry": { "ID": "SGML", "SortAs": "SGML",
                      * "GlossTerm": "Standard Generalized Markup Language", "Acronym":
                      * "SGML", "Abbrev": "ISO 8879:1986", "GlossDef": { "para": "A
                      * meta-markup language, used to create markup languages such as
                      * DocBook.", "GlossSeeAlso": [ "GML", "XML" ] }, "GlossSee": "markup" }
                      * } } } }
                      */
                      // 1.先获取根匿名对象{},直接传入json即可
                      JSONObject rootObject = new JSONObject(json);
                      // 2.获取glossary对象,使用getJSONObject方法
                      JSONObject glossaryObject = rootObject.getJSONObject("glossary");
                      // 输出一下title,使用getString
                      System.out.println(glossaryObject.getString("title"));
                      // 3.获取GlossDiv对象,使用getJSONObject方法
                      JSONObject GlossDivObject = glossaryObject.getJSONObject("GlossDiv");
                      // 输出一下title,使用getString
                      System.out.println(GlossDivObject.getString("title"));
                      // 4.获取GlossList对象,使用getJSONObject方法
                      JSONObject GlossListObject = GlossDivObject.getJSONObject("GlossList");
                      // 5.获取GlossEntry对象,使用getJSONObject方法
                      JSONObject GlossEntryObject = GlossListObject.getJSONObject("GlossEntry");
                      // 逐个输出字符串
                      System.out.println(GlossEntryObject.getString("ID"));
                      System.out.println(GlossEntryObject.getString("SortAs"));
                      System.out.println(GlossEntryObject.getString("GlossTerm"));
                      System.out.println(GlossEntryObject.getString("Acronym"));
                      System.out.println(GlossEntryObject.getString("Abbrev"));
                      System.out.println(GlossEntryObject.getString("GlossSee"));
                      // 6.获取GlossDef对象,使用getJSONObject方法
                      JSONObject GlossDefObject = GlossEntryObject.getJSONObject("GlossDef");
                      // 输出一下para,使用getString
                      System.out.println(GlossDefObject.getString("para"));
                      // 7.获取GlossSeeAlso数组,使用getJSONArray方法
                      JSONArray GlossSeeAlsoArray = GlossDefObject.getJSONArray("GlossSeeAlso");
                      // 转换成String[]
                      String[] items = new String[GlossSeeAlsoArray.length()];
                      GlossSeeAlsoArray.toList().toArray(items);
                      // foreach
                      for (String string : items) {
                      System.out.println(string);
                      }
                      // 至此解析完毕
                      }
                      }


                      IP属地:黑龙江22楼2016-08-25 10:17
                      回复
                        private static void generateJSON() {
                        JSONObject rootObject = new JSONObject();
                        rootObject.put("name", "JSON");
                        rootObject.put("age", 20);
                        rootObject.put("boolean", true);
                        JSONObject classObejct = new JSONObject();
                        classObejct.put("one", 1);
                        classObejct.put("two", 2);
                        rootObject.put("class", classObejct);
                        JSONArray url = new JSONArray();
                        url.put("http://www.baidu.com");
                        url.put("http://www.taibao.com");
                        rootObject.put("URL", url);
                        System.out.println(rootObject.toString());
                        }


                        IP属地:黑龙江23楼2016-08-25 10:21
                        回复
                          要生成json也很简单,使用put方法即可,toString方法就是返回JSON


                          IP属地:黑龙江24楼2016-08-25 10:22
                          回复
                            @祥仔smile


                            IP属地:黑龙江25楼2016-08-25 10:23
                            回复