怎么样在Swift三中获得Json包的内容

小编想在这几个帖子里面总结三个问题:三个是经过ReST获取Json的言辞,那几个相比较轻巧

自己想在那一个帖子里面总计多个难点:3个是透过ReST获取Json的口舌,那么些相比较轻易

自个儿想在那个帖子里面计算八个难点:四个是由此ReST获取Json的讲话,这些比较轻松

前者调用API的时候大很多都以使用json作为数据的回来格式,json也得以当做壹种格式来进展数据存储,也给我们提供了1种系列化的点子。
  Json使用花括号{}包蕴的键值对组织,key必须是string类型,value为任何基本项目或数据结构。标准的json基本数据类型有string、number、true、false、null;
  Json有三种数据结构:壹.Map,也叫做对象:{‘key壹’:’value一’,’key二’:’value2′}
二.Array:[‘arr1′,’arr2′,’arr3’]。也便是说全部JSON对象都是要以这几个样式表示,

另三个是什么样将Json包一层壹层转存为字典,并最后通过keyword:
String获得所需内容的方法

另2个是何许将Json包壹层1层转存为字典,并最后经过keyword:
String得到所需内容的秘诀

另1个是如何将Json包1层一层转存为字典,并最终经过keyword:
String获得所需内容的形式

澳门葡京备用网址 1

废话不说,来看代码

废话不说,来看代码

废话不说,来看代码

  要注意,上边的事例中,null表示1个性子或因素未有值,而”表示的是空字符串。
  JSON字符串与JSON对象的不相同,上边说一下:

首先是服务器重返的Json方式,那里以youtube
API为例,因为google做的Json包很专门的职业(都以 String: String 也许 String:
Int)

率先是服务器重回的Json情势,这里以youtube
API为例,因为google做的Json包很专门的工作(都是 String: String 或然 String:
Int)

第二是服务器重返的Json方式,那里以youtube
API为例,因为google做的Json包很规范(都以 String: String 大概 String:
Int)

  • JSON对象是直接能够使用JQuery操作的格式,和js中的对象一样,能够用对象(类名)点出属性(方法)。

youtube API 的 请求 UMuranoL 格局(小编那边仅获得首要字搜索摄像列表)是

youtube API 的 请求 U汉兰达L 方式(小编那里仅获得主要字搜索录制列表)是

youtube API 的 请求 UTiguanL 方式(笔者那里仅猎取主要字搜索录像列表)是

var str2 = { “name”: “haorooms”, “sex”: “man” };

怎么样在Swift三中获得Json包的内容。https://www.googleapis.com/youtube/v3/search?part=snippet&q=摄像关键字&type=video&key=你的API
Key

https://www.googleapis.com/youtube/v3/search?part=snippet&q=录制关键字&type=video&key=你的API
Key

https://www.googleapis.com/youtube/v3/search?part=snippet&q=摄像关键字&type=video&key=你的API
Key

  • JSON字符串仅仅只是三个字符串,三个完完全全,不截取的话无法收取个中蕴藏的数据,不能够平素行使,除非你只想alert()他;

里头,录制关键字比如 minecraft

内部,录制关键字比如 minecraft

在那之中,录制关键字比方 minecraft

解析与转移Json的常用包——Fastjson

法斯特json是三个Java语言编写的JSON管理器,由Alibaba集团支付。它选取壹种“假定有序高效协作”的算法,把JSON
Parse的习性提高到极致,是当前Java语言中最快的JSON库。上边来介绍一下法斯特json常用类。

API Key
形如 AIzaSyDDqTGpVR7jxeozoOEjH6SLaRdw0YY-HPQ

API Key
形如 AIzaSyDDqTGpVR7jxeozoOEjH6SLaRdw0YY-HPQ

API Key
形如AIzaSyDDqTGpVR7jxeozoOEjH6SLaRdw0YY-HPQ

(1)com.alibaba.fastjson.JSON

法斯特json
API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都能够在JSON类上的静态方法直接实现。

Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray 
JSONObject parseObject(String text); // 把JSON文本parse成JSONObject 
T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean 
JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合 
String toJSONString(Object object); // 将JavaBean序列化为JSON文本 
String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 
Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray

【示例】

protected JSONObject wrapHint(Object o) {
   return o == null?null:
      (o instanceof JSONObject?(JSONObject)o:
        (o instanceof String?JSON.parseObject("{\'.\':\'" + (String)o + "\'}"):
           null));
}

其回到的Json包情势为

其归来的Json包情势为

其回到的Json包情势为

(2)JSONObject类

JSONObject组织情势是一个键值对,事实上,JSONObject是三个Map。解析成功后,如若是Java内置对象,可以直接调用相应的章程得到值,举例public
Integer getInteger(String key);要是否置于对象,能够调用public
JSONObject getJSONObject(String
key)来读取对象。要是照旧数组,能够调用public JSONArray
getJSONArray(String key)。
  JSONObject能够解析Map、JavaBean对象等,让大家一并来看一下JSONObject的构造方法。

    private static final int DEFAULT_INITIAL_CAPACITY = 16;
    private final Map<String, Object> map;
    public JSONObject() {
        this(16, false);
    }

    public JSONObject(Map<String, Object> map) {
        this.map = map;
    }

    public JSONObject(boolean ordered) {
        this(16, ordered);
    }

    public JSONObject(int initialCapacity) {
        this(initialCapacity, false);
    }

    public JSONObject(int initialCapacity, boolean ordered) {
        if(ordered) {
           //根据初始化容量初始化map
            this.map = new LinkedHashMap(initialCapacity);
        } else {
            this.map = new HashMap(initialCapacity);
        }
    }

唯独JSONObject未有主意解析类似于HashMap<String,JSONObject>和HashMap<String,
HashMap<String,
Object>>的Map,那是因为JSONObject只认未有泛型的HashMap。

使用JSONObject构建json

JSONObject person = new JsonObject();
try{
    person.put("namr",ada);
    person.put("age",12);
    person.put("major",new String[]{"理发","挖掘机"});
    //print
    System.out.println(person.toString());
}catch(JSONException e){
}

使用Map构建json

Map<String,Object> person = new HashMap<String,Object>();
person.put("namr",ada);
person.put("age",12);
person.put("major",new String[]{"理发","挖掘机"});
//print
System.out.println(new JSONObject(person).toString());

使用JavaBean构建json

Person person = new Person();
person.setName(ada);
person.setAge(12);
person.setMajor(new String[]{"理发","挖掘机"});
//print
System.out.println(new JSONObject(person));

从文件中读取json

public static void main(String args[])throws IOException,JSONException{
     File file = new File(//json文件路径);
     String content = FileUtils.readFileToString(file);
     JSONObject jsonObject = new JsonObject(content);
     //从文件读取json判断null
     if(jsonObject.isNull("name")){
            System.out.println("姓名是"+jsonObject.getString("name"));
     }
     System.out.println("年龄是"+jsonObject.getDouble("age"));
     System.out.println("有没有女朋友"+jsonObject.getBoolean("has_girlFriend"));
     JSONArray majorArray = jsonObject.getJSONArray("major");
     for(int i=0;i<majorArray.length();i++){
          String m = (String)majorArray.get(i);
          System.out.println("专业-"+(i+1)+m);
     }
}

从JSONObject获取keySet

String string = "{key_1:123, key_2:234, key_3:567}";
JSONObject json= JSONObject.fromObject(string);
Set<String> set = json.keySet();
for(String key : set){
     System.out.println("key=="+key);
}
{
 "kind": "youtube#searchListResponse",
 "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/dJyYeiv8CbvQiayof_7MqRQOSi8\"",
 "nextPageToken": "CAUQAA",
 "regionCode": "AU",
 "pageInfo": {
  "totalResults": 1000000,
  "resultsPerPage": 5
 },
 "items": [
  {
   "kind": "youtube#searchResult",
   "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/ey6kUbVRRdmcLIPpklkbtxDp_-o\"",
   "id": {
    "kind": "youtube#video",
    "videoId": "XgdgO5UzdR4"
   },
   "snippet": {
    "publishedAt": "2016-11-27T12:00:01.000Z",
    "channelId": "UCUVa51UA_690sEKyRbHb-5A",
    "title": "5 Werewolves Caught on Camera & Spotted In Real Life!",
    "description": "5 Werewolves Caught on Tape & Spotted In Real Life! Description: Myths and stories of humans with the ability to transform into animals exist across all human ...",
    "thumbnails": {
     "default": {
      "url": "https://i.ytimg.com/vi/XgdgO5UzdR4/default.jpg",
      "width": 120,
      "height": 90
     },
     "medium": {
      "url": "https://i.ytimg.com/vi/XgdgO5UzdR4/mqdefault.jpg",
      "width": 320,
      "height": 180
     },
     "high": {
      "url": "https://i.ytimg.com/vi/XgdgO5UzdR4/hqdefault.jpg",
      "width": 480,
      "height": 360
     }
    },
    "channelTitle": "Top 5s Finest",
    "liveBroadcastContent": "none"
   }
  },
  {
   "kind": "youtube#searchResult",
   "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/LKJrjJEelN2h1v58M533Dwv_fjs\"",
   "id": {
    "kind": "youtube#video",
    "videoId": "KUS0454UUDM"
   },
   "snippet": {
    "publishedAt": "2016-08-03T10:16:33.000Z",
    "channelId": "UC0rzsIrAxF4kCsALP6J2EsA",
    "title": "MAIN-MAIN: WEREWOLF",
    "description": "Yang mau liat tutorial cara mainnya, klik di sini: https://youtu.be/ShGULqRjLMk.",
    "thumbnails": {
     "default": {
      "url": "https://i.ytimg.com/vi/KUS0454UUDM/default.jpg",
      "width": 120,
      "height": 90
     },
     "medium": {
      "url": "https://i.ytimg.com/vi/KUS0454UUDM/mqdefault.jpg",
      "width": 320,
      "height": 180
     },
     "high": {
      "url": "https://i.ytimg.com/vi/KUS0454UUDM/hqdefault.jpg",
      "width": 480,
      "height": 360
     }
    },
    "channelTitle": "Raditya Dika",
    "liveBroadcastContent": "none"
   }
  },
  {
   "kind": "youtube#searchResult",
   "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/8qIl76CAeB__wn-Sd_g4pik1XT0\"",
   "id": {
    "kind": "youtube#video",
    "videoId": "fScsIQ8wgNo"
   },
   "snippet": {
    "publishedAt": "2016-10-02T22:21:35.000Z",
    "channelId": "UCNUohh38MTkgY4xKpFeVGmQ",
    "title": "Werewolf Scenes - My Favorite Transformation HD",
    "description": "Werewolf Scenes - My Favorite Transformation HD.",
    "thumbnails": {
     "default": {
      "url": "https://i.ytimg.com/vi/fScsIQ8wgNo/default.jpg",
      "width": 120,
      "height": 90
     },
     "medium": {
      "url": "https://i.ytimg.com/vi/fScsIQ8wgNo/mqdefault.jpg",
      "width": 320,
      "height": 180
     },
     "high": {
      "url": "https://i.ytimg.com/vi/fScsIQ8wgNo/hqdefault.jpg",
      "width": 480,
      "height": 360
     }
    },
    "channelTitle": "ENJOY PLEASE",
    "liveBroadcastContent": "none"
   }
  },
  {
   "kind": "youtube#searchResult",
   "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/SByO_v4iInfFZ5GUe2xJUYXIWh4\"",
   "id": {
    "kind": "youtube#video",
    "videoId": "ShGULqRjLMk"
   },
   "snippet": {
    "publishedAt": "2016-08-03T10:13:33.000Z",
    "channelId": "UC0rzsIrAxF4kCsALP6J2EsA",
    "title": "TUTORIAL: MAIN WEREWOLF",
    "description": "Ini adalah video tutorial untuk main werewolf. Untuk melihat video permainannya, bisa klik di sini: https://youtu.be/KUS0454UUDM.",
    "thumbnails": {
     "default": {
      "url": "https://i.ytimg.com/vi/ShGULqRjLMk/default.jpg",
      "width": 120,
      "height": 90
     },
     "medium": {
      "url": "https://i.ytimg.com/vi/ShGULqRjLMk/mqdefault.jpg",
      "width": 320,
      "height": 180
     },
     "high": {
      "url": "https://i.ytimg.com/vi/ShGULqRjLMk/hqdefault.jpg",
      "width": 480,
      "height": 360
     }
    },
    "channelTitle": "Raditya Dika",
    "liveBroadcastContent": "none"
   }
  },
  {
   "kind": "youtube#searchResult",
   "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/NjscIZ4D3C-FDPsnBKe-j5tslrE\"",
   "id": {
    "kind": "youtube#video",
    "videoId": "MI1Yi2AUVAc"
   },
   "snippet": {
    "publishedAt": "2016-09-09T07:27:23.000Z",
    "channelId": "UCNUohh38MTkgY4xKpFeVGmQ",
    "title": "Vampire vs Werewolf Fight Scene HD - Van Helsing - Vampire vs Lycan Wolf",
    "description": "Vampire vs Werewolf Fight Scene HD - Van Helsing - Vampire vs Lycan Wolf.",
    "thumbnails": {
     "default": {
      "url": "https://i.ytimg.com/vi/MI1Yi2AUVAc/default.jpg",
      "width": 120,
      "height": 90
     },
     "medium": {
      "url": "https://i.ytimg.com/vi/MI1Yi2AUVAc/mqdefault.jpg",
      "width": 320,
      "height": 180
     },
     "high": {
      "url": "https://i.ytimg.com/vi/MI1Yi2AUVAc/hqdefault.jpg",
      "width": 480,
      "height": 360
     }
    },
    "channelTitle": "ENJOY PLEASE",
    "liveBroadcastContent": "none"
   }
  }
 ]
}
---------------------------------------------------------------------------------------------------------------------
第 0 层 
{  }
第一层
{  
   "kind":"youtube#searchListResponse",
   "etag":"\"uQc-MPTsstrHkQcRXL3IWLmeNsM/g4lxZZLl2WXJPiISOtol-Vf33d8\"",
   "nextPageToken":"CAUQAA",
   "regionCode":"US",
   "pageInfo":{  },
   "items":[  ]
}
第二层
对于 pageInfo 
{  
      "totalResults":1000000,
      "resultsPerPage":5
}
对于 items (注意那个中括号)
[  [
      {  
         "kind":"youtube#searchResult",
         "etag":"\"uQc-MPTsstrHkQcRXL3IWLmeNsM/ey6kUbVRRdmcLIPpklkbtxDp_-o\"",
         "id":{  },
         "snippet":{  }
      },
      {  
         "kind":"youtube#searchResult",
         "etag":"\"uQc-MPTsstrHkQcRXL3IWLmeNsM/LKJrjJEelN2h1v58M533Dwv_fjs\"",
         "id":{  },
         "snippet":{  }
      },
      {  
         "kind":"youtube#searchResult",
         "etag":"\"uQc-MPTsstrHkQcRXL3IWLmeNsM/8qIl76CAeB__wn-Sd_g4pik1XT0\"",
         "id":{  },
         "snippet":{  }
      },
      {  
         "kind":"youtube#searchResult",
         "etag":"\"uQc-MPTsstrHkQcRXL3IWLmeNsM/SByO_v4iInfFZ5GUe2xJUYXIWh4\"",
         "id":{  },
         "snippet":{  }
      },
      {  
         "kind":"youtube#searchResult",
         "etag":"\"uQc-MPTsstrHkQcRXL3IWLmeNsM/NjscIZ4D3C-FDPsnBKe-j5tslrE\"",
         "id":{  },
         "snippet":{  }
      }
   ]
这就是说,中括号里面的内容实际上是一个数组,这个数组有五个元素。

第三层
以其中一个元素为例
对于 id
{  
            "kind":"youtube#video",
            "videoId":"XgdgO5UzdR4"
}
对于 snippet
{  
            "publishedAt":"2016-11-27T12:00:01.000Z",
            "channelId":"UCUVa51UA_690sEKyRbHb-5A",
            "title":"5 Werewolves Caught on Camera & Spotted In Real Life!",
            "description":"5 Werewolves Caught on Tape & Spotted In Real Life! Description: Myths and stories of humans with the ability to transform into animals exist across all human ...",
            "thumbnails":{  },
            "channelTitle":"Top 5s Finest",
            "liveBroadcastContent":"none"
 }
第四层
对于 thumbnails
{  
               "default":{  },
               "medium":{  },
               "high":{  }
}
第五层
对于 default 
{  
                  "url":"https://i.ytimg.com/vi/XgdgO5UzdR4/default.jpg",
                  "width":120,
                  "height":90
}
其它两个类似

至此Json 包解析完毕。
然后附上代码。首先是ReST请求部分
{
 "kind": "youtube#searchListResponse",
 "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/dJyYeiv8CbvQiayof_7MqRQOSi8\"",
 "nextPageToken": "CAUQAA",
 "regionCode": "AU",
 "pageInfo": {
  "totalResults": 1000000,
  "resultsPerPage": 5
 },
 "items": [
  {
   "kind": "youtube#searchResult",
   "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/ey6kUbVRRdmcLIPpklkbtxDp_-o\"",
   "id": {
    "kind": "youtube#video",
    "videoId": "XgdgO5UzdR4"
   },
   "snippet": {
    "publishedAt": "2016-11-27T12:00:01.000Z",
    "channelId": "UCUVa51UA_690sEKyRbHb-5A",
    "title": "5 Werewolves Caught on Camera & Spotted In Real Life!",
    "description": "5 Werewolves Caught on Tape & Spotted In Real Life! Description: Myths and stories of humans with the ability to transform into animals exist across all human ...",
    "thumbnails": {
     "default": {
      "url": "https://i.ytimg.com/vi/XgdgO5UzdR4/default.jpg",
      "width": 120,
      "height": 90
     },
     "medium": {
      "url": "https://i.ytimg.com/vi/XgdgO5UzdR4/mqdefault.jpg",
      "width": 320,
      "height": 180
     },
     "high": {
      "url": "https://i.ytimg.com/vi/XgdgO5UzdR4/hqdefault.jpg",
      "width": 480,
      "height": 360
     }
    },
    "channelTitle": "Top 5s Finest",
    "liveBroadcastContent": "none"
   }
  },
  {
   "kind": "youtube#searchResult",
   "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/LKJrjJEelN2h1v58M533Dwv_fjs\"",
   "id": {
    "kind": "youtube#video",
    "videoId": "KUS0454UUDM"
   },
   "snippet": {
    "publishedAt": "2016-08-03T10:16:33.000Z",
    "channelId": "UC0rzsIrAxF4kCsALP6J2EsA",
    "title": "MAIN-MAIN: WEREWOLF",
    "description": "Yang mau liat tutorial cara mainnya, klik di sini: https://youtu.be/ShGULqRjLMk.",
    "thumbnails": {
     "default": {
      "url": "https://i.ytimg.com/vi/KUS0454UUDM/default.jpg",
      "width": 120,
      "height": 90
     },
     "medium": {
      "url": "https://i.ytimg.com/vi/KUS0454UUDM/mqdefault.jpg",
      "width": 320,
      "height": 180
     },
     "high": {
      "url": "https://i.ytimg.com/vi/KUS0454UUDM/hqdefault.jpg",
      "width": 480,
      "height": 360
     }
    },
    "channelTitle": "Raditya Dika",
    "liveBroadcastContent": "none"
   }
  },
  {
   "kind": "youtube#searchResult",
   "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/8qIl76CAeB__wn-Sd_g4pik1XT0\"",
   "id": {
    "kind": "youtube#video",
    "videoId": "fScsIQ8wgNo"
   },
   "snippet": {
    "publishedAt": "2016-10-02T22:21:35.000Z",
    "channelId": "UCNUohh38MTkgY4xKpFeVGmQ",
    "title": "Werewolf Scenes - My Favorite Transformation HD",
    "description": "Werewolf Scenes - My Favorite Transformation HD.",
    "thumbnails": {
     "default": {
      "url": "https://i.ytimg.com/vi/fScsIQ8wgNo/default.jpg",
      "width": 120,
      "height": 90
     },
     "medium": {
      "url": "https://i.ytimg.com/vi/fScsIQ8wgNo/mqdefault.jpg",
      "width": 320,
      "height": 180
     },
     "high": {
      "url": "https://i.ytimg.com/vi/fScsIQ8wgNo/hqdefault.jpg",
      "width": 480,
      "height": 360
     }
    },
    "channelTitle": "ENJOY PLEASE",
    "liveBroadcastContent": "none"
   }
  },
  {
   "kind": "youtube#searchResult",
   "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/SByO_v4iInfFZ5GUe2xJUYXIWh4\"",
   "id": {
    "kind": "youtube#video",
    "videoId": "ShGULqRjLMk"
   },
   "snippet": {
    "publishedAt": "2016-08-03T10:13:33.000Z",
    "channelId": "UC0rzsIrAxF4kCsALP6J2EsA",
    "title": "TUTORIAL: MAIN WEREWOLF",
    "description": "Ini adalah video tutorial untuk main werewolf. Untuk melihat video permainannya, bisa klik di sini: https://youtu.be/KUS0454UUDM.",
    "thumbnails": {
     "default": {
      "url": "https://i.ytimg.com/vi/ShGULqRjLMk/default.jpg",
      "width": 120,
      "height": 90
     },
     "medium": {
      "url": "https://i.ytimg.com/vi/ShGULqRjLMk/mqdefault.jpg",
      "width": 320,
      "height": 180
     },
     "high": {
      "url": "https://i.ytimg.com/vi/ShGULqRjLMk/hqdefault.jpg",
      "width": 480,
      "height": 360
     }
    },
    "channelTitle": "Raditya Dika",
    "liveBroadcastContent": "none"
   }
  },
  {
   "kind": "youtube#searchResult",
   "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/NjscIZ4D3C-FDPsnBKe-j5tslrE\"",
   "id": {
    "kind": "youtube#video",
    "videoId": "MI1Yi2AUVAc"
   },
   "snippet": {
    "publishedAt": "2016-09-09T07:27:23.000Z",
    "channelId": "UCNUohh38MTkgY4xKpFeVGmQ",
    "title": "Vampire vs Werewolf Fight Scene HD - Van Helsing - Vampire vs Lycan Wolf",
    "description": "Vampire vs Werewolf Fight Scene HD - Van Helsing - Vampire vs Lycan Wolf.",
    "thumbnails": {
     "default": {
      "url": "https://i.ytimg.com/vi/MI1Yi2AUVAc/default.jpg",
      "width": 120,
      "height": 90
     },
     "medium": {
      "url": "https://i.ytimg.com/vi/MI1Yi2AUVAc/mqdefault.jpg",
      "width": 320,
      "height": 180
     },
     "high": {
      "url": "https://i.ytimg.com/vi/MI1Yi2AUVAc/hqdefault.jpg",
      "width": 480,
      "height": 360
     }
    },
    "channelTitle": "ENJOY PLEASE",
    "liveBroadcastContent": "none"
   }
  }
 ]
}
---------------------------------------------------------------------------------------------------------------------
第 0 层 
{  }
第一层
{  
   "kind":"youtube#searchListResponse",
   "etag":"\"uQc-MPTsstrHkQcRXL3IWLmeNsM/g4lxZZLl2WXJPiISOtol-Vf33d8\"",
   "nextPageToken":"CAUQAA",
   "regionCode":"US",
   "pageInfo":{  },
   "items":[  ]
}
第二层
对于 pageInfo 
{  
      "totalResults":1000000,
      "resultsPerPage":5
}
对于 items (注意那个中括号)
[  [
      {  
         "kind":"youtube#searchResult",
         "etag":"\"uQc-MPTsstrHkQcRXL3IWLmeNsM/ey6kUbVRRdmcLIPpklkbtxDp_-o\"",
         "id":{  },
         "snippet":{  }
      },
      {  
         "kind":"youtube#searchResult",
         "etag":"\"uQc-MPTsstrHkQcRXL3IWLmeNsM/LKJrjJEelN2h1v58M533Dwv_fjs\"",
         "id":{  },
         "snippet":{  }
      },
      {  
         "kind":"youtube#searchResult",
         "etag":"\"uQc-MPTsstrHkQcRXL3IWLmeNsM/8qIl76CAeB__wn-Sd_g4pik1XT0\"",
         "id":{  },
         "snippet":{  }
      },
      {  
         "kind":"youtube#searchResult",
         "etag":"\"uQc-MPTsstrHkQcRXL3IWLmeNsM/SByO_v4iInfFZ5GUe2xJUYXIWh4\"",
         "id":{  },
         "snippet":{  }
      },
      {  
         "kind":"youtube#searchResult",
         "etag":"\"uQc-MPTsstrHkQcRXL3IWLmeNsM/NjscIZ4D3C-FDPsnBKe-j5tslrE\"",
         "id":{  },
         "snippet":{  }
      }
   ]
这就是说,中括号里面的内容实际上是一个数组,这个数组有五个元素。

第三层
以其中一个元素为例
对于 id
{  
            "kind":"youtube#video",
            "videoId":"XgdgO5UzdR4"
}
对于 snippet
{  
            "publishedAt":"2016-11-27T12:00:01.000Z",
            "channelId":"UCUVa51UA_690sEKyRbHb-5A",
            "title":"5 Werewolves Caught on Camera & Spotted In Real Life!",
            "description":"5 Werewolves Caught on Tape & Spotted In Real Life! Description: Myths and stories of humans with the ability to transform into animals exist across all human ...",
            "thumbnails":{  },
            "channelTitle":"Top 5s Finest",
            "liveBroadcastContent":"none"
 }
第四层
对于 thumbnails
{  
               "default":{  },
               "medium":{  },
               "high":{  }
}
第五层
对于 default 
{  
                  "url":"https://i.ytimg.com/vi/XgdgO5UzdR4/default.jpg",
                  "width":120,
                  "height":90
}
其它两个类似

至此Json 包解析完毕。
然后附上代码。首先是ReST请求部分

{ “kind”: “youtube#searchListResponse”, “etag”:
“\”uQc-MPTsstrHkQcRXL3IWLmeNsM/dJyYeiv8CbvQiayof_7MqRQOSi8\””,
“nextPageToken”: “CAUQAA”, “regionCode”: “AU”, “pageInfo”: { 
“totalResults”: 1000000,  “resultsPerPage”: 5 }, “items”: [  {  “kind”:
“youtube#searchResult”,  “etag”:
“\”uQc-MPTsstrHkQcRXL3IWLmeNsM/ey6kUbVRRdmcLIPpklkbtxDp_-o\””,  “id”:
{    “kind”: “youtube#video”,    “videoId”: “XgdgO5UzdR4”  }, 
“snippet”: {    “publishedAt”: “2016-11-27T12:00:01.000Z”,   
“channelId”: “UCUVa51UA_690sEKyRbHb-5A”,    “title”: “5 Werewolves
Caught on Camera & Spotted In Real Life!”,    “description”: “5
Werewolves Caught on Tape & Spotted In Real Life! Description: Myths and
stories of humans with the ability to transform into animals exist
across all human …”,    “thumbnails”: {    “default”: {      “url”:
“”,      “width”: 120,   
  “height”: 90    },    “medium”: {      “url”:
“”,      “width”: 320, 
    “height”: 180    },    “high”: {      “url”:
“”,      “width”: 480, 
    “height”: 360    }    },    “channelTitle”: “Top 5s Finest”,   
“liveBroadcastContent”: “none”  }  },  {  “kind”:
“youtube#searchResult”,  “etag”:
“\”uQc-MPTsstrHkQcRXL3IWLmeNsM/LKJrjJEelN2h1v58M533Dwv_fjs\””,  “id”:
{    “kind”: “youtube#video”,    “videoId”: “KUS0454UUDM”  }, 
“snippet”: {    “publishedAt”: “2016-08-03T10:16:33.000Z”,   
“channelId”: “UC0rzsIrAxF4kCsALP6J2EsA”,    “title”: “MAIN-MAIN:
WEREWOLF”,    “description”: “Yang mau liat tutorial cara mainnya, klik
di sini: .”,    “thumbnails”: {   
“default”: {      “url”:
“”,      “width”: 120,   
  “height”: 90    },    “medium”: {      “url”:
“”,      “width”: 320, 
    “height”: 180    },    “high”: {      “url”:
“”,      “width”: 480, 
    “height”: 360    }    },    “channelTitle”: “Raditya Dika”,   
“liveBroadcastContent”: “none”  }  },  {  “kind”:
“youtube#searchResult”,  “etag”:
“\”uQc-MPTsstrHkQcRXL3IWLmeNsM/8qIl76CAeB__wn-Sd_g4pik1XT0\””, 
“id”: {    “kind”: “youtube#video”,    “videoId”: “fScsIQ8wgNo”  }, 
“snippet”: {    “publishedAt”: “2016-10-02T22:21:35.000Z”,   
“channelId”: “UCNUohh38MTkgY4xKpFeVGmQ”,    “title”: “Werewolf Scenes –
My Favorite Transformation HD”,    “description”: “Werewolf Scenes – My
Favorite Transformation HD.”,    “thumbnails”: {    “default”: {     
“url”: “”,      “width”:
120,      “height”: 90    },    “medium”: {      “url”:
“”,      “width”: 320, 
    “height”: 180    },    “high”: {      “url”:
“”,      “width”: 480, 
    “height”: 360    }    },    “channelTitle”: “ENJOY PLEASE”,   
“liveBroadcastContent”: “none”  }  },  {  “kind”:
“youtube#searchResult”,  “etag”:
“\”uQc-MPTsstrHkQcRXL3IWLmeNsM/SByO_v4iInfFZ5GUe2xJUYXIWh4\””,  “id”:
{    “kind”: “youtube#video”,    “videoId”: “ShGULqRjLMk”  }, 
“snippet”: {    “publishedAt”: “2016-08-03T10:13:33.000Z”,   
“channelId”: “UC0rzsIrAxF4kCsALP6J2EsA”,    “title”: “TUTORIAL: MAIN
WEREWOLF”,    “description”: “Ini adalah video tutorial untuk main
werewolf. Untuk melihat video permainannya, bisa klik di sini:
.”,    “thumbnails”: {    “default”: {     
“url”: “”,      “width”:
120,      “height”: 90    },    “medium”: {      “url”:
“”,      “width”: 320, 
    “height”: 180    },    “high”: {      “url”:
“”,      “width”: 480, 
    “height”: 360    }    },    “channelTitle”: “Raditya Dika”,   
“liveBroadcastContent”: “none”  }  },  {  “kind”:
“youtube#searchResult”,  “etag”:
“\”uQc-MPTsstrHkQcRXL3IWLmeNsM/NjscIZ4D3C-FDPsnBKe-j5tslrE\””,  “id”:
{    “kind”: “youtube#video”,    “videoId”: “MI1Yi2AUVAc”  }, 
“snippet”: {    “publishedAt”: “2016-09-09T07:27:23.000Z”,   
“channelId”: “UCNUohh38MTkgY4xKpFeVGmQ”,    “title”: “Vampire vs
Werewolf Fight Scene HD – Van Helsing – Vampire vs Lycan Wolf”,   
“description”: “Vampire vs Werewolf Fight Scene HD – Van Helsing –
Vampire vs Lycan Wolf.”,    “thumbnails”: {    “default”: {      “url”:
“”,      “width”: 120,   
  “height”: 90    },    “medium”: {      “url”:
“”,      “width”: 320, 
    “height”: 180    },    “high”: {      “url”:
“”,      “width”: 480, 
    “height”: 360    }    },    “channelTitle”: “ENJOY PLEASE”,   
“liveBroadcastContent”: “none”  }  } ]}

(3)JSONArray

JSONArray用来存放JSON数组。解析成功后,假如是Java对象,能够调用相应措施赢得值,比如public
Integer getInteger(int index)。假设不是放到对象,能够调用public
JSONObject getJSONObject(int index)来读取对象。

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;

public class ParseJSONObject {

    public static void main(String args[]){
        String json = "[{\"id\":1,\"type\":\"cycle\",\"attribute\":{\"center\":\"(10.4, 123.345)\", \"radius\":67.4}},{\"id\":2,\"type\":\"polygon\",\"attribute\":[{\"vertex\":\"(10.4, 133.345)\"}, {\"vertex\":\"(10.4, 143.345)\"}]}]";
        JSONArray array = JSON.parseArray(json);
        System.out.println(array.getJSONObject(0).getJSONObject("attribute").get("center"));
        System.out.println(array.getJSONObject(1).getJSONArray("attribute").getJSONObject(1).get("vertex"));
    }
}

输出为:
(10.4, 123.345)
(10.4, 143.345)

JSONArray实际上是叁个List,让大家来看一下它的构造方法:

   private final List<Object> list;
   public JSONArray() {
        this.list = new ArrayList(10);
    }

    public JSONArray(List<Object> list) {
        this.list = list;
    }

    public JSONArray(int initialCapacity) {
        this.list = new ArrayList(initialCapacity);
    }

因而大家得以像使用List同样采纳JSONArray:

public <T> T[] toArray(T[] a)    //把JSONArray变成数组
public boolean add(Object e)     //向JSONArray添加元素
public boolean contains(Object o)
public Iterator<Object> iterator()
public void setComponentType(Type componentType)
public Type getComponentType()   //取得一个数组的Class对象,非数组类型无法通过getComponentType()获取到相应的 Class 对象,如char[].class 调用此方法得到的就是char,但是char.class得到的就是nnull

澳门葡京备用网址 2

澳门葡京备用网址 3


Json的缺点

一JSON是文件,它的频率不高

  • 富有的数量都以字符格局的JSON要求转移管理。
  • 每一种值在各种文书档案中都带有其键名称,要求越多的存款和储蓄和管理。
  • 同意表示复杂的结构,导致运转时支付。

假如将JSON作为一种数据库的多寡格式时,数据库要费用不少代价,因为每一条记下里面键和值都要存,而且每一趟查询都要开始展览拍卖。那将意味着:

  • 数据库引擎必须领会每一种文书档案的情势并管理它们,而不是管理常规元组和性质(行和列)。
  • 非得解析和拍卖JSON中各样键值的数据类型
  • JSON大概是XML的3个简短的本子,但它依然很巨大。

即便说JSON作为1种数据库的数码格式的成效不高,不过最首要依旧看你数据库引擎怎么落到实处,索引系统怎么得以完毕。举例Mongodb的存款和储蓄格式是BSON,BSON是一类别JSON的二进制方式的蕴藏格式,简称Binary
JSON。不过Mongodb的成效如故非常高的。

二JSON未有可举办组织,毫无数据质量可言
  JSON在数据库中不要求数据结构,因而数据品质差。自从JSON数据库不供给别的协会,不管是明知故犯照旧无意,应用程序都足以插入任何格式的数据流,只要那么些数量是卓有功效的JSON。

然后是Json解析部分
然后是Json解析部分

第 0 层

澳门葡京备用网址 4

澳门葡京备用网址 5

{}

只解释Json解析部分。
我现在的目的是取出四个key值:视频的title、description、thumbnail default url 还有 videoId
过程是这样:
根据我上面的分析,从第一层开始(第 0 层不算)每层都建立[String: AnyObject]字典或数组(根据Json那一层的结构而定)。在最后一层只有String内容的时候,也可以建立[String: String]字典(也就是idDict也可以建成[String: String]的,别的不可以。)
第一层 - resultDict 这个不能建成[String: String],因为pageInfo和items关键字对应的不是String,而是一个或多个子字典。
第二层 - 因为pageInfo里面的内容我不需要(如需要建字典),所以只有items对应的数组 -- itemsArray  (建数组因为items本身是五个元素组成的数组,在前面已经说明。)
第三层 - 对于 id -- idDict字典,这个可以建[String: AnyObject]也可以建[String: String](因为内容只有String,建AnyObject的话,就需要cast一下(as! String)。)
对于 snippet -- snippetDict字典,这个必须[String: AnyObject]
第四层 - thumbnailDict
第五层 - defaultDict,其它两个Key里面的信息不需要,如果需要,也可以建相应字典提取出来。
然后我建了一个每个元素都是[String: AnyObject]字典的Array,形如[[String: AnyObject]],用来储存我提取出来的四个keyword对应的信息。当然,这个数组建成[[String: String]]也是可以的。当时对这个代码理解还不深,属于半迷糊状态。

然后就大功告成。
只解释Json解析部分。
我现在的目的是取出四个key值:视频的title、description、thumbnail default url 还有 videoId
过程是这样:
根据我上面的分析,从第一层开始(第 0 层不算)每层都建立[String: AnyObject]字典或数组(根据Json那一层的结构而定)。在最后一层只有String内容的时候,也可以建立[String: String]字典(也就是idDict也可以建成[String: String]的,别的不可以。)
第一层 - resultDict 这个不能建成[String: String],因为pageInfo和items关键字对应的不是String,而是一个或多个子字典。
第二层 - 因为pageInfo里面的内容我不需要(如需要建字典),所以只有items对应的数组 -- itemsArray  (建数组因为items本身是五个元素组成的数组,在前面已经说明。)
第三层 - 对于 id -- idDict字典,这个可以建[String: AnyObject]也可以建[String: String](因为内容只有String,建AnyObject的话,就需要cast一下(as! String)。)
对于 snippet -- snippetDict字典,这个必须[String: AnyObject]
第四层 - thumbnailDict
第五层 - defaultDict,其它两个Key里面的信息不需要,如果需要,也可以建相应字典提取出来。
然后我建了一个每个元素都是[String: AnyObject]字典的Array,形如[[String: AnyObject]],用来储存我提取出来的四个keyword对应的信息。当然,这个数组建成[[String: String]]也是可以的。当时对这个代码理解还不深,属于半迷糊状态。

然后就大功告成。

第一层

 

 

{

“kind”:”youtube#searchListResponse”,

“etag”:”\”uQc-MPTsstrHkQcRXL3IWLmeNsM/g4lxZZLl2WXJPiISOtol-Vf33d8\””,

“nextPageToken”:”CAUQAA”,

“regionCode”:”US”,

“pageInfo”:{},

“items”:[]

}

第二层

对于 pageInfo

{

“totalResults”:1000000,

“resultsPerPage”:5

}

对此 items (注意丰裕中括号)

[  [

{

“kind”:”youtube#searchResult”,

“etag”:”\”uQc-MPTsstrHkQcRXL3IWLmeNsM/ey6kUbVRRdmcLIPpklkbtxDp_-o\””,

“id”:{},

“snippet”:{}

},

{

“kind”:”youtube#searchResult”,

“etag”:”\”uQc-MPTsstrHkQcRXL3IWLmeNsM/LKJrjJEelN2h1v58M533Dwv_fjs\””,

“id”:{},

“snippet”:{}

},

{

“kind”:”youtube#searchResult”,

“etag”:”\”uQc-MPTsstrHkQcRXL3IWLmeNsM/8qIl76CAeB__wn-Sd_g4pik1XT0\””,

“id”:{},

“snippet”:{}

},

{

“kind”:”youtube#searchResult”,

“etag”:”\”uQc-MPTsstrHkQcRXL3IWLmeNsM/SByO_v4iInfFZ5GUe2xJUYXIWh4\””,

“id”:{},

“snippet”:{}

},

{

“kind”:”youtube#searchResult”,

“etag”:”\”uQc-MPTsstrHkQcRXL3IWLmeNsM/NjscIZ4D3C-FDPsnBKe-j5tslrE\””,

“id”:{},

“snippet”:{}

澳门葡京备用网址,}

]那么,中括号里面包车型地铁内容其实是1个数组,这些数组有四个要素。

第三层

以个中三个因素为例

对于 id

{

“kind”:”youtube#video”,

“videoId”:”XgdgO5UzdR4″

}对于 snippet

{

“publishedAt”:”2016-11-27T12:00:01.000Z”,

“channelId”:”UCUVa51UA_690sEKyRbHb-5A”,

“title”:”5 Werewolves Caught on Camera & Spotted In Real Life!”,

“description”:”5 Werewolves Caught on Tape & Spotted In Real Life! Description: Myths and stories of humans with the ability to transform into animals exist across all human …”,

“thumbnails”:{},

“channelTitle”:”Top 5s Finest”,

“liveBroadcastContent”:”none”

}第四层

对于 thumbnails

{

“default”:{},

“medium”:{},

“high”:{}

}第五层

对于 default

{

“url”:””,

“width”:120,

“height”:90

}其它八个类似

由来Json 包解析完结。

下一场附上代码。首先是ReST请求部分

澳门葡京备用网址 6

然后是Json解析部分

澳门葡京备用网址 7

只解释Json解析部分。

自己现在的目的是抽取八个key值:摄像的title、description、thumbnail default
url 还有 videoId

进度是那般:

依赖本身上边的辨析,从第贰层开端(第 0 层不算)每层都创立[String:
AnyObject]字典或数组(依据Json那一层的构造而定)。在最终一层惟有String内容的时候,也能够建立[String:
String]字典(也正是idDict也可以建成[String: String]的,别的不得以。)

率先层 – resultDict 这么些不能够建成[String:
String],因为pageInfo和items关键字呼应的不是String,而是3个或八个子字典。

第一层 –
因为pageInfo里面包车型大巴始末本人不要求(如必要建字典),所以唯有items对应的数组
— itemsArray 
(建数组因为items本人是多个成分构成的数组,在前面早已注脚。)

其三层 – 对于 id — idDict字典,这一个能够建[String:
AnyObject]也足以建[String:
String](因为内容只有String,建AnyObject的话,就供给cast一下(as!
String)。)

对此 snippet — snippetDict字典,那么些必须[String: AnyObject]

第四层 – thumbnailDict

第肆层 –
defaultDict,其余八个Key里面包车型客车音信不供给,若是供给,也足以建相应字典提抽出来。

然后作者建了二个种种成分都以[String:
AnyObject]字典的Array,形如[[String:
AnyObject]],用来存款和储蓄小编领到出来的八个keyword对应的新闻。当然,那么些数组建成[[String:
String]]也是能够的。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website