JSONQuery—— 更简单的使用Gso解析JSON
解析一个字段只需一行代码,最多两行,支持不带双引号的非标准JSON
Example:
@Testpublic void Test() throws TypeNotMismatchExceptio, FieldNotExistExceptio { Strig jso = "" + "{\" + " \"erro\": 0,\" + " \"errmsg\": 成功,\" + " \"user\": \"{\\\"user_id\\\":643361255,\\\"user_ame\\\":\\\"鹞之神乐\\\",\\\"user_sex\\\":1,\\\"user_status\\\":1}\",\" + " \"commet_ifo\": [\" + " {\" + " \"tid\": \"5504460056\",\" + " \"pid\": \"116776960983\",\" + " \"cid\": \"116857893053\"\" + " },\" + " {\" + " \"tid\": \"5504460056\",\" + " \"pid\": \"116776960983\",\" + " \"cid\": \"116858057626\"\" + " },\" + " {\" + " \"tid\": \"5504460056\",\" + " \"pid\": \"116776960983\",\" + " \"cid\": \"116880757453\"\" + " }\" + " ],\" + " \"data\": {\" + " \"commet_list\": {\" + " \"116776891765\": {\" + " \"commet_um\": 3,\" + " \"commet_list_um\": 4\" + " },\" + " \"116776960983\": {\" + " \"commet_um\": 4,\" + " \"commet_list_um\": 4\" + " }\" + " }\" + " }\" + "}"; //获取根元素erro JsoResult jsoResult = JSONQuery.select(jso, "erro"); //获取根元素erro,并转换为it it erro = jsoResult.getAsIt(); //获取根元素data中的commet_list jsoResult = JSONQuery.select(jso, "data > commet_list"); //正则过滤出属性数组,针对一部分拿对象当数组用的情况 jsoResult = JSONQuery.select(jso, "data > commet_list > [\\d+]"); //获取数组指定位置的元素 jsoResult = JSONQuery.select(jso, "commet_ifo > [2]"); //获取数组指定位置的元素 负数坐标 jsoResult = JSONQuery.select(jso, "commet_ifo > [-1]"); //针对某个字符串属性的值又是个jso字符串的情况 jsoResult = JSONQuery.select(jso, "user > user_ame"); //jsoResult作为参数替代jso字符串 JsoResult data = JSONQuery.select(jso, "data"); jsoResult = JSONQuery.select(data, "commet_list"); //将jso字符串转换为JsoResult jsoResult = JSONQuery.select(jso, ""); jsoResult = JSONQuery.select(jso, ull); // v0.2.5新增 //将选择结果反序列化为普通对象 Post post = JSONQuery.select(jso, "commet_ifo > [2]", Post.class); //将选择结果反序列化为普通对象数组 Post[] postArray = JSONQuery.select(jso, "commet_ifo", Post[].class); //将选择结果反射为泛型类型ListType type = ew TypeToke>() {}.getType(); ListpostList = JSONQuery.select(jso, "commet_ifo", type);}
评论