zoukankan      html  css  js  c++  java
  • android JSON数据格式 解析

    一、   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));
    }

    到这里三种结束

  • 相关阅读:
    [Luogu P3626] [APIO2009] 会议中心
    杭电 1869 六度分离 (求每两个节点间的距离)
    杭电 1874 畅通工程续 (求某节点到某节点的最短路径)
    最短路径模板
    杭电 2544 最短路径
    POJ 1287 Networking (最小生成树模板题)
    NYOJ 1875 畅通工程再续 (无节点间距离求最小生成树)
    POJ 2485 Highways (求最小生成树中最大的边)
    杭电 1233 还是畅通工程 (最小生成树)
    杭电 1863 畅通工程 (最小生成树)
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5146086.html
Copyright © 2011-2022 走看看