JSON

JSON 数据解析简介

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

JSON 数据解析简介

一、首先JSON是联网的设备之间相互传递数据格式之一,如网页的异步加载数据js请求获取json数据、手机端请求json数据来展示用户业务的数据等
<span>java 中JSON的解析常用方法 JSON的类型 两种数据格式 JSONObject: "{ }" JSONArray: "[ ]" JSONObject: "{ }" JSONArray: "[ ]" getJSONObject(String key) getJSONArray(String key) Object get(String key) JSONObject类 getJSONObject(String key) getJSONArray(String key) Object get(String key) getXXX(String key) optXXX(String key) isNull(String key) has(String key) put(String,xxxType) getXXX(String key) optXXX(String key) isNull(String key) has(String key) put(String,xxxType) </span><pre><span></span><pre><span>JSONArray类 length() 获取数组的长度 get/opt/put等方法同上 length() 获取数组的长度 get/opt/put等方法同上</span>   <span>JSON设置数据和得到数据简单代码如下: public class Demo{ public static void main(String[] args) throws JSONException { //注意:类所在的包:org.json.JSONObject/JSONArry JSONObject jsonObj=new JSONObject(); //向json对象中添加属性和属性值 jsonObj.put("name","test"); jsonObj.put("tel","10086"); jsonObj.put("pass","1111"); jsonObj.put("age",30); //输出json对象转成的字符串 System.out.println(jsonObj.toString()); //获取json对象中的name值 String name=jsonObj.getString("name"); System.out.println(name); //通过get获取接送对象中不存在的属性时,会抛出异常,如果使用opt的方式,则不会抛出异常,只返回"" // String qq=jsonObj.getString("qq");//不存在的属性 // System.out.println("qq"+qq); String qq=jsonObj.optString("qq"); System.out.println(qq); //获取对象不存在,返回null JSONObject obj=jsonObj.optJSONObject("sore"); System.out.println(obj); //向对象中增加json数组 JSONArray array=new JSONArray(); array.put(99.2); array.put(98.3); array.put(92.3); array.put(93.3); array.put(100); jsonObj.put("scories",array); System.out.println(jsonObj.toString()); } <strong>} </strong></span>

二、当然也可以使用第三方的数据解析工具解析数据

JSON

fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。
主要特点:
1. 快速FAST (比其它任何基于Java的解析器和生成器更快)
2. 强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
3. 零依赖(没有依赖其它任何类库除了JDK)

TypeToken

概念:是谷歌公司封装的一套json解析的工作集,其使用了java反射机制
TypeToken<E> 指定将json内容转成指定JavaBean的类型标识器
核心类与方法
    TypeToken<E> 指定将json内容转成指定JavaBean的类型标识器
    toJson(Object,Type)
    fromJson(String,Type)
toJson(Object,Type)
fromJson(String,Type)
第一步:根据请求获取的json数据结构,创建JavaBean类
使用步骤
    第一步:根据请求获取的json数据结构,创建JavaBean类
    第二步:创建类型标器TypeToken,并声明其泛型
    第三步:使用fromJson方法转换json数据
第二步:创建类型标器TypeToken,并声明其泛型
第三步:使用fromJson方法转换json数据

三、简单百度听歌的例子如下:首先创建一个JavaBean类,然后再创建一个下载的回调接口,在写一个主类去得到结果

<span>package test; import java.util.List; public class Bean { private Songurl songurl; private String error_code; public Songurl getSongurl() { return songurl; } public String getError_code() { return error_code; } public void setError_code(String error_code) { this.error_code = error_code; } public void setSongurl(Songurl songurl) { this.songurl = songurl; } @Override public String toString() { return "Test [songurl=" + songurl + ", error_code=" + error_code + "]"; } } class Songurl { private List<Url> url; public List<Url> getList() { return url; } public void setList(List<Url> url) { this.url = url; } @Override public String toString() { return "Songurl ["+"url=" + url + "]"; } } class Url { private String show_link; /* * "song_file_id": 42822293, "is_udition_url": 0, */ public String getShow_link() { return show_link; } public void setShow_link(String show_link) { this.show_link = show_link; } @Override public String toString() { return "Url [show_link=" + show_link + ", song_file_id=" + "]"; } }</span>

<span>package utils; import java.io.IOException; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import utils.XUtils.CallBack; public class XUtils { public static void getXml(String url,CallBack callback){ HttpClient client=new DefaultHttpClient(); HttpGet get=new HttpGet(url); try { HttpResponse resp=client.execute(get); if(resp.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ //System.out.println("连接成功"); byte bytes[]=EntityUtils.toByteArray(resp.getEntity()); callback.response(bytes); } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public interface CallBack{ public void response(byte bytes[]); }</span> <span>}</span>

 

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

相关文章
  • jQuery JSON的解析方式分享

    jQuery JSON的解析方式分享

    2016-10-23 12:00

  • API json多层数据实体类封装(利用泛型技术)

    API json多层数据实体类封装(利用泛型技术)

    2016-10-21 12:00

  • JSON解析和XML解析对比,JSON解析XML解析

    JSON解析和XML解析对比,JSON解析XML解析

    2016-10-21 11:01

  • 从零开始的JSON库教程(五):解析数组解答篇

    从零开始的JSON库教程(五):解析数组解答篇

    2016-10-20 14:00

网友点评
z