一、   JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。

 Json建构于两种结构:  最后再加一种格式在文章的最后显示出来非常少有的格式

     1、“名称/值”对的集合(A collection of name/value pairs)。不同的语言中。它被理解为对象(object)。纪录(record)。结构(struct),字典(dictionary),哈希表(hash table)。有键列表(keyed list),或者关联数组 (associative array)。 如:     

        {

            “name”:”jackson”,

            “age”:100

         }





    2、值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)如:

     {

        “students”:

        [

            {“name”:”jackson”,“age”:100},

            {“name”:”michael”,”age”:51}

        ]

     }

二、java解析JSON步骤

    A、server端将数据转换成json字符串

      首先、server端项目要导入json的jar包和json所依赖的jar包至builtPath路径下(这些能够到JSON-lib官网下载:http://json-lib.sourceforge.net/)

 

 JSON <wbr>之JAVA <wbr>解析

    然后将数据转为json字符串,核心函数是:

 public static String createJsonString(String key, Object value)

    {

        JSONObject jsonObject = new JSONObject();

        jsonObject.put(key, value);

        return jsonObject.toString();

    }

B、client将json字符串转换为对应的javaBean

   1、client获取json字符串(由于android项目中已经集成了json的jar包所以这里无需导入)

public class HttpUtil

{

   

    public static String getJsonContent(String urlStr)

    {

        try

        {// 获取HttpURLConnection连接对象

            URL url = new URL(urlStr);

            HttpURLConnection httpConn = (HttpURLConnection) url

                    .openConnection();

            // 设置连接属性

            httpConn.setConnectTimeout(3000);

            httpConn.setDoInput(true);

            httpConn.setRequestMethod("GET");

            // 获取对应码

            int respCode = httpConn.getResponseCode();

            if (respCode == 200)

            {

                return ConvertStream2Json(httpConn.getInputStream());

            }

        }

        catch (MalformedURLException e)

        {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        catch (IOException e)

        {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        return "";

    }





   

    private static String ConvertStream2Json(InputStream inputStream)

    {

        String jsonStr = "";

        // ByteArrayOutputStream相当于内存输出流

        ByteArrayOutputStream out = new ByteArrayOutputStream();

        byte[] buffer = new byte[1024];

        int len = 0;

        // 将输入流转移到内存输出流中

        try

        {

            while ((len = inputStream.read(buffer, 0, buffer.length)) != -1)

            {

                out.write(buffer, 0, len);

            }

            // 将内存流转换为字符串

            jsonStr = new String(out.toByteArray());

        }

        catch (IOException e)

        {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        return jsonStr;

    }

}

2、获取javaBean

    public static Person getPerson(String jsonStr)

    {

        Person person = new Person();

        try

        {// 将json字符串转换为json对象

            JSONObject jsonObj = new JSONObject(jsonStr);

            // 得到指定json key对象的value对象

            JSONObject personObj = jsonObj.getJSONObject("person");

            // 获取之对象的全部属性

            person.setId(personObj.getInt("id"));

            person.setName(personObj.getString("name"));

            person.setAddress(personObj.getString("address"));

        }

        catch (JSONException e)

        {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }





        return person;

    }





    public static List<Person> getPersons(String jsonStr)

    {

        List<Person> list = new ArrayList<Person>();





        JSONObject jsonObj;

        try

        {// 将json字符串转换为json对象

            jsonObj = new JSONObject(jsonStr);

            // 得到指定json key对象的value对象

            JSONArray personList = jsonObj.getJSONArray("persons");

            // 遍历jsonArray

            for (int i = 0; i < personList.length(); i++)

            {

                // 获取每个json对象

                JSONObject jsonItem = personList.getJSONObject(i);

                // 获取每个json对象的值

                Person person = new Person();

                person.setId(jsonItem.getInt("id"));

                person.setName(jsonItem.getString("name"));

                person.setAddress(jsonItem.getString("address"));

                list.add(person);

            }

        }

        catch (JSONException e)

        {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }





        return list;

    }









这里是第三种格式 

{"state":"true","classNo":["HA_2012","4567","4566","test001"]}

解析的方法为

if (result.getString("state").equals("true")) {

try {





JSONArray show=result.getJSONArray("classNo");



List<String> list=new ArrayList<String>();

for(int i=0;i<show.length();i++){

list.add(show.getString(i));

}

到这里三种结束

android JSON数据格式 解析的更多相关文章

  1. Android JSON原生解析的几种思路,以号码归属地,笑话大全,天气预报为例演示

    Android JSON原生解析的几种思路,以号码归属地,笑话大全,天气预报为例演示 今天项目中要实现一个天气的预览,加载的信息很多,字段也很多,所以理清了一下思路,准备独立出来写一个总结,这样对大家 ...

  2. Android JSON数据解析(数据传输)

    上篇随笔详细介绍了三种解析服务器端传过来的xml数据格式,而对于服务器端来说,返回给客户端的数据格式一般分为html.xml和json这三 种格式,那么本篇随笔将讲解一下json这个知识点,包括如何通 ...

  3. Android json 数据解析

    1.json格式 2.json解析 3.gson解析 4.fastjson解析 一.Json格式 json一种轻量级的数据交换格式.在网络上传输交换数据一般用xml, json. 两种结构: 1)对象 ...

  4. Android JSON数据解析(GSON方式)

    要创建和解析JSON数据,也可以使用GSON来完成.GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库.使用GSON,可以很容易的将一串JSON数据转换为一个Jav ...

  5. Android Json数据解析

    1.通过主Activity的Button按钮进行解析 public class MainActivity extends Activity { private Button button=null; ...

  6. JSON数据格式解析

    JSON数据的语法规则 1.数据以键值对的形式 2.数据由逗号分隔 3.花括号保存对象 4.方括号保存数组 以PHP的数组为例: <?php $arr = array( "aaaa&q ...

  7. Android JSON语法解析示例

    参考: http://www.open-open.com/lib/view/open1326376799874.html https://www.cnblogs.com/jycboy/p/json_x ...

  8. android 解析json数据格式(转)

    json数据格式解析我自己分为两种: 一种是普通的,一种是带有数组形式的: 普通形式的:服务器端返回的json数据格式如下: {"userbean":{"Uid" ...

  9. android 解析json数据格式

    json数据格式解析我自己分为两种: 一种是普通的,一种是带有数组形式的: 普通形式的:服务器端返回的json数据格式如下: {"userbean":{"Uid" ...

随机推荐

  1. java打印日历

    打个日历,写了半天,感情水平真菜, 不过主要是不会数组,明天一定要把数组看了 package demo; import java.util.Scanner; public class Demo { / ...

  2. D.6661 - Equal Sum Sets

    Equal Sum Sets Let us consider sets of positive integers less than or equal to n. Note that all elem ...

  3. hdu2289Cup(神坑题,精度+二分,以半径二分不能过,以高度为二分就过了)

    Problem Description The WHU ACM Team has a big cup, with which every member drinks water. Now, we kn ...

  4. 仿爱乐透android客户端界面实现(附工程源码)

    最近研究了爱乐透android客户端的界面,感觉它的界面布局在一般开发中具有代表性.难点在于复杂的布局实现. 界面实现主要采用了以下方式: 注意:版本支持:android2.2以上,低版本要改动源码哦 ...

  5. 【转】CentOS 6.5 生产环境优化指南

    原文链接:https://www.deepwebcn.com/82.html centos6.5 CentOS 6.5 系统安装之后并不能立即投入生产环境使用,常常需要先经过我们运维人员的优化才行.优 ...

  6. Java NIO--初步认识

    : 一.java NIO 和阻塞I/O的区别      1. 阻塞I/O通信模型      2. java NIO原理及通信模型 二.java NIO服务端和客户端代码实现 一.java NIO 和阻 ...

  7. pojg2744找一个最长的字符串x,使得对于已经给出的字符串中的任意一个y,x或者是y的子串,或者x中的字符反序之后得到的新字符串是y的子串。

    http://poj.grids.cn/practice/2744 描述现在有一些由英文字符组成的大小写敏感的字符串,你的任务是找到一个最长的字符串x,使得对于已经给出的字符串中的任意一个y,x或者是 ...

  8. wget -r -nc -np "http://www.zhihu.com/"

    下载网站所有 -r,  --recursive          specify recursive download. -nc, --no-clobber              skip dow ...

  9. 新买一款打印机hp5525N

    11900 RMB 彩色.激光.彩打. 让法国的工艺工程师给改成法语的了.

  10. SuperSocket源码解析之消息处理

    一 简述 Tcp消息的处理本身是与Tcp消息传输过程独立的,是消息的两个不同阶段,从前面的会话生命周期我们已经知道消息的传输主要有SocketSession实现,而真正处理则交由AppSession实 ...