10分钟掌握XML、JSON及其解析(7)

private ArrayList<VideoConstant> parseVideoAlbumJsonObject(JSONObject albumJSONObject, ArrayList<Integer> albumIdJSONArrayList) { MyLog.d(TAG, "parseVideoAlbumJsonObject, length=" + albumJSONObject.length()); if (albumJSONObject.length() < 1) { return null; } ArrayList<VideoConstant> videos = new ArrayList<VideoConstant>(); try { for (int index = 0; index < albumJSONObject.length(); index++) { VideoConstant video = new VideoConstant(); JSONObject itemJsonObject; itemJsonObject = albumJSONObject.getJSONObject(albumIdJSONArrayList.get(index) .toString()); MyLog.d(TAG, "string=" + albumIdJSONArrayList.get(index).toString()); video.mAlbumId = itemJsonObject.optString(InterfaceParameterName.ID); video.mAtitle = itemJsonObject.optString(InterfaceParameterName.TITLE); video.mEpisodeCount = itemJsonObject.optString(InterfaceParameterName.UPDATE_SET); video.mTvSets = itemJsonObject.optString(InterfaceParameterName.TV_SETS); video.mDesc = itemJsonObject.optString(InterfaceParameterName.DESCRIPTION); video.mCid = itemJsonObject.optString(InterfaceParameterName.CATEGORY_ID); video.mImg = itemJsonObject.optString(InterfaceParameterName.IMG); video.mHighimg = itemJsonObject .optString(InterfaceParameterName.HIGH_RESO_PORT_IMG); video.mHoriImg = itemJsonObject .optString(InterfaceParameterName.HIGH_RESO_HORI_IMG); video.mScore = itemJsonObject.optString(InterfaceParameterName.SCORE); video.mMainActors = itemJsonObject.optString(InterfaceParameterName.MAIN_ACTOR); video.mCreateTime = itemJsonObject.optString(InterfaceParameterName.CREATE_TIME); video.mDuration = itemJsonObject.optString(InterfaceParameterName.DURATION); video.mTag = itemJsonObject.optString(InterfaceParameterName.TAG); MyLog.d(TAG, "id=" + video.mAlbumId + ",title=" + video.mAlbumTitle + ",img=" + video.mHighimg + ",tvsets=" + video.mTvSets); videos.add(video); } } catch (JSONException e) { e.printStackTrace(); } return videos; }

<4>. Android JSON解析库

上面介绍都是使用Android提供的原生类解析JSON,最大的好处是项目不需要引入第三方库,但是如果比较注重开发效率而且不在意应用大小增加几百K的话,有以下JSON可供选择:

Jackson

google-gson

Json-lib

大家可以去对应的官网下载并学习:)

三、 JSON vs. XML

JSON和XML就像武林界的屠龙刀和倚天剑,那么他们孰强孰弱?

XML长期执数据传输界之牛耳,而JSON作为后起之秀,已经盟主发起了挑战。

那就让他们来进行PK一下:

<1>. JSON相比XML的不同之处

没有结束标签
更短
读写的速度更快
能够使用内建的 JavaScript eval() 方法进行解析
使用数组
不使用保留字
总之: JSON 比 XML 更小、更快,更易解析。

<2>. XML和JSON的区别:

XML的主要组成成分:

XML是element、attribute和element content。

JSON的主要组成成分:

JSON是object、array、string、number、boolean(true/false)和null。

XML要表示一个object(指name-value pair的集合),最初可能会使用element作为object,每个key-value pair 用 attribute 表示:

<student age="10"/>

但如个某个 value 也是 object,那么就不可以当作attribute:

<student age="10"> <address> <country>China</country> <province>Guang Dong</province> <city>...</city> <district>...</district> ... </address> </student>

那么,什么时候用element,什么时候用attribute,就已经是一个问题了。

而JSON因为有object这种类型,可以自然地映射,不需考虑上述的问题,自然地得到以下的格式。

{ "name": "John", "age" : 10, "address" : { "country" : "China", "province" : "Guang Dong", "city" : "..", "district" : "..", ... } }

One More Thing…

XML需要选择怎么处理element content的换行,而JSON string则不须作这个选择。

XML只有文字,没有预设的数字格式,而JSON则有明确的number格式,这样在locale上也安全。

XML映射数组没大问题,就是数组元素tag比较重复冗余。JSON 比较易读。

JSON的true/false/null也能容易统一至一般编程语言的对应语义。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzdysx.html