zoukankan      html  css  js  c++  java
  • JSON 之JAVA 解析

    一、   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、服务器端将数据转换成json字符串
          首先、服务器端项目要导入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、客户端将json字符串转换为相应的javaBean
       1、客户端获取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;
        }

  • 相关阅读:
    资源利用率提高67%,腾讯实时风控平台云原生容器化之路
    热门分享预告|腾讯大规模云原生平台稳定性实践
    Fluid + GooseFS 助力云原生数据编排与加速快速落地
    基于 Clusternet 与 OCM 打造新一代开放的多集群管理平台
    案例 | 沃尔玛 x 腾讯云 Serverless 应用实践,全力保障消费者购物体验
    SuperEdge 高可用云边隧道有哪些特点?
    kubernetes 降本增效标准指南|ProphetPilot:容器智能成本管理引擎
    公有云上构建云原生 AI 平台的探索与实践
    如何削减 50% 机器预算?“人机对抗”探索云端之路
    SuperEdge 易学易用系列-SuperEdge 简介
  • 原文地址:https://www.cnblogs.com/rosepotato/p/3383340.html
Copyright © 2011-2022 走看看