JSON

我的Json解析实战

字号+ 作者:H5之家 来源:H5之家 2017-10-13 13:45 我要评论( )

我的Json解析实战 - 编程技术 - 跑步客

所谓json,其实就是在我们访问一个网页的接口的时候,服务器端传送给我们客户端的一种数据的结构,当然我们向服务器端发送的数据有时也会转换成json格式,当然了,这不是必须的。最近在解析一些json字符串,所以就贴出一些代码,也方便以后自己复习和使用。
首先先来一些简单的吧。
对一个json对象进行解析:
字符串原串是这样的:String json={“Persons”:[{“address”:”河南”,”name”:”郭XX”,”id”:201492115},{“address”:”大连”,”name”:”unName”,”id”:201492111}]},(我这里声明为String是不正确的格式,知识为了看起来方便)很明显可以看出在Persons这个key是对应一个数组的,而数组的内容则是一个对象,对象有三个成员变量address,name,id,每一个也都对应相应的value,下面让我们开始正式的解析吧,
代码如下:

TestJson { () { } (String []args){ JsonService jsonService= JsonService(); { String message=JsonTools.createJsonObject(, jsonService.getListString()); System..println(message); JSONObject jsonObject= JSONObject(message); JSONArray jsonArray=jsonObject.getJSONArray(); ( i=;i<jsonArray.length();i ){ Person p= Person(); id; String name=; String address=; address=jsonArray.getJSONObject(i).getString(); name=jsonArray.getJSONObject(i).getString(); id=Integer.parseInt(jsonArray.getJSONObject(i).getString()); p.setAddress(address); p.setId(id); p.setName(name); System..println( p.toString()); } } (JSONException e) { e.printStackTrace(); } } }

下面是解析的结果:

[= = = [= = =

其中大致的原理是这样的,我们先声明一个JSONObject对象,然后将要进行解析的json字符串传进去,由于要解析的内容并非一个简单的键值对,而是一个对象,所以要使用JSONArray来获得一个数组,当然了,数组的获得还是需要依靠JsonObject对象的,然后对数组内每一个字符串对应的内容进行分别得解析就好了。
下面我会写一个比较复杂的json的解析过程(稍微有些bug,请不要介意啊,只是展示这么个思想,如果,博友们有好的方式,希望多多留言啊),接口传回的是一个json字符串,具体如下,{“error”:0,”status”:”success”,”date”:”2015-10-16”,”results”:[{“currentCity”:”成都”,”pm25”:”173”,”index”:[{“title”:”穿衣”,”zs”:”舒适”,”tipt”:”穿衣指数”,”des”:”建议着长袖T恤、衬衫加单裤等服装。年老体弱者宜着针织长袖衬衫、马甲和长裤。”},{“title”:”洗车”,”zs”:”不宜”,”tipt”:”洗车指数”,”des”:”不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。”},{“title”:”旅游”,”zs”:”适宜”,”tipt”:”旅游指数”,”des”:”天气较好,但丝毫不会影响您出行的心情。温度适宜又有微风相伴,适宜旅游。”},{“title”:”感冒”,”zs”:”较易发”,”tipt”:”感冒指数”,”des”:”昼夜温差较大,较易发生感冒,请适当增减衣服。体质较弱的朋友请注意防护。”},{“title”:”运动”,”zs”:”适宜”,”tipt”:”运动指数”,”des”:”天气较好,赶快投身大自然参与户外运动,尽情感受运动的快乐吧。”},{“title”:”紫外线强度”,”zs”:”弱”,”tipt”:”紫外线强度指数”,”des”:”紫外线强度较弱,建议出门前涂擦SPF在12-15之间、PA 的防晒护肤品。”}],”weather_data”:[{“date”:”周五 10月16日 (实时:26℃)”,”dayPictureUrl”:”“,”nightPictureUrl”:”“,”weather”:”多云转小雨”,”wind”:”南风微风”,”temperature”:”25 ~ 18℃”},{“date”:”周六”,”dayPictureUrl”:”“,”nightPictureUrl”:”“,”weather”:”小雨”,”wind”:”北风微风”,”temperature”:”23 ~ 17℃”},{“date”:”周日”,”dayPictureUrl”:”“,”nightPictureUrl”:”“,”weather”:”多云”,”wind”:”南风微风”,”temperature”:”26 ~ 15℃”},{“date”:”周一”,”dayPictureUrl”:”“,”nightPictureUrl”:”“,”weather”:”多云转阴”,”wind”:”南风微风”,”temperature”:”26 ~ 18℃”}]}]}
是很复杂吧,反正一开始看,就觉得这什么啊,简直太乱了,但是我们仔细的查看一下,发现这个还是有很清晰的结构的,无非数组里面有潜逃了几层对象嘛,话不多说,直接上代码吧。

package import java import java import java import java import java import java import java import java import java import org import org import org import org public class TestSSDut { public TestSSDut() { // TODO Auto-generated constructor stub } public static String loadJson (String url) { StringBuilder json = new StringBuilder() try { URL urlObject = new URL(url) URLConnection uc = urlObject() BufferedReader = new BufferedReader(new InputStreamReader(uc(),)) String inputLine = null while ( (inputLine = ()) != null) { json(inputLine) } () } catch (MalformedURLException e) { e() } catch (IOException e) { e() } return json() } public static String JsonComplier(String jsonString) throws JSONException{ return null } public static void main(String []args){ String json=loadJson() System(json) String result try { String str= JSONTokener jsonParser = new JSONTokener(json) // 此时还未读取任何json文本,直接读取就是一个JSONObject对象。 // 如果此时的读取位置在 : 了,那么nextValue就是(String) JSONObject person = (JSONObject) jsonParser() // 接下来的就是JSON对象的操作了 String error=person() String status=person() String date=person() str = error status date System(str) JSONArray jsonArray=person() for(int i= String currentCity=jsonArray(i)() System( currentCity) String pm2_5=jsonArray(i)() System( pm2_5) JSONArray index=jsonArray(i)() for(int j= String title=index(i)() System(title) String zs=index(i)() System(zs) String tipt=index(i)() System(tipt) String des=index(i)() System(des) } JSONArray weather_data=jsonArray(i)() for(int j= String datee=weather_data(i)() System(datee) String dayPictureUrl=weather_data(i)() System(dayPictureUrl) String nightPictureUrl=weather_data(i)() System(nightPictureUrl) String weather=weather_data(i)() System(weather) String wind=weather_data(i)() System(wind) String temperature=weather_data(i)() System(temperature) } } } catch (JSONException e) { // TODO Auto-generated catch block e() } } public static List<String> getJsonArrayValue(String jsonString) throws JSONException{ JSONObject demoJson = new JSONObject() JSONArray numberList = demoJson(jsonString) List<String>list=new ArrayList<String>() for(int i= //获取数组中的数组 list(String(numberList(i)())) } return list } }

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • JSON的String字符串与Java的List列表对象的相互转换

    JSON的String字符串与Java的List列表对象的相互转换

    2017-10-13 15:03

  • Manifest.json文档说明 manifest配置

    Manifest.json文档说明 manifest配置

    2017-10-13 13:15

  • 产生基于JSON数据的优秀Swift数据模型 相关介绍、文档、教程

    产生基于JSON数据的优秀Swift数据模型 相关介绍、文档、教程

    2017-10-13 11:08

  • jQuery.parseJSON(json)将JSON字符串转换成js对象

    jQuery.parseJSON(json)将JSON字符串转换成js对象

    2017-10-13 10:00

网友点评
"