博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android JSON数据格式 解析
阅读量:6637 次
发布时间:2019-06-25

本文共 3493 字,大约阅读时间需要 11 分钟。

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

到这里三种结束

转载地址:http://wrivo.baihongyu.com/

你可能感兴趣的文章
问题MySQL server has gone away
查看>>
SpriteKit-SKView
查看>>
Log4j 配置文件(log4j.properties)的所在路径问题(转)
查看>>
柜子和托的取值
查看>>
oracle 创建表加双引号作用
查看>>
SpringMvc流程分析,简单源码分析
查看>>
[K/3Cloud] 动态表单打开时传递一个自定义参数并在插件中获取
查看>>
jquery学习记录三(表单选择器)
查看>>
mac 使用iTerm2快捷登录远程服务器
查看>>
CF1027C Minimum Value Rectangle 贪心 数学
查看>>
洛谷P4513 小白逛公园
查看>>
中国福利彩票,牛B,开奖和数据传输有什么关系?
查看>>
MOSS 2010 修改列表的字段名及列的宽度方法
查看>>
正则表达式
查看>>
带有.rdlc报表的项目发布需要注意的问题
查看>>
操作系统和环境准备
查看>>
ios webp转换jpg
查看>>
CF700E Cool Slogans
查看>>
前端第三天
查看>>
SDN第一次上机作业
查看>>