• Java解析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、服务器端将数据转换成json字符串
    首先、服务器端项目要导入json的jar包和json所依赖的jar包至builtPath路径下(这些可以到JSON-lib官网下载:http://json-lib.sourceforge.net/

    然后将数据转为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;
    }

    2,简写方式

    JSONObject  dataJson=new JSONObject("你的Json数据“);
    JSONObject response=dataJson.getJSONObject("response");
    JSONArray data=response.getJSONArray("data");
    JSONObject info=data.getJSONObject(0);
    String province=info.getString("province");
    String city=info.getString("city");
    String district=info.getString("district");
    String address=info.getString("address");
    System.out.println(province+city+district+address);
  • 相关阅读:
    javascript循环结构练习
    个人复习JavaScript重点(总结一)
    第十章汽车租凭系统
    员工执行
    第六章预习
    第五章使用Dictionary替换List<t>实现功能
    第5章体检套餐管理系统
    JAVA面试题
    AJAX
    SSM中的登陆验证码
  • 原文地址:https://www.cnblogs.com/jxldjsn/p/5713673.html
Copyright © 2020-2023  润新知