Android数据解析JSON解析之手动JSON解析

这篇博客介绍了Android中如何手动解析JSON数据,包括JSON的定义、特点、语法规则和值类型。详细讲解了如何将JSON对象转化为Java对象、解析JSON数组到List集合、处理复杂嵌套数据以及特殊对象嵌套对象的情况,并提供了测试代码和实际效果展示。
摘要由CSDN通过智能技术生成

Android数据解析JSON解析之手动JSON解析

JSON简介

定义

JSON的全称是JavaScript Object Notation,是一种轻量级的数据交换格式。
JSON 语法是 javascript 语法的子集。

特点

(1)JSON比XML数据传输的有效性要高出很多
(2)JSON完全独立于编程语言。
(3)本质就是具有特定格式的字符串

JSON 语法规则

JSON 语法是 JavaScript 对象表示法语法的子集。

  • 数据在名称/值对中 如”firstName” : “John”
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

JSON 值类型

JSON 值可以是:

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true或false)
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null

常用的JSON值类型是:
JSON数组
{
“employees”: [
{ “firstName”:”John” , “lastName”:”Doe” },
{ “firstName”:”Anna” , “lastName”:”Smith” },
{ “firstName”:”Peter” , “lastName”:”Jones” }
]
}

JSON 数组在方括号中书写:
JSON对象
对象可以包含多个名称/值对:
{ “firstName”:”John” , “lastName”:”Doe” }
JSON 对象在花括号中书写

手动JSON解析

1、将JSON 对象转化为Java对象

测试数据

{
"id":2, "name":"大虾", 
"price":12.3, 
"imagePath":"http://192.168.10.165:8080/L05_Server/images/f1.jpg"
}

代码:

private void jsonToJavaObject() {
    //获取json字符串
    String jsonData = "{\n" +
            "\t\"id\":2, \"name\":\"大虾\", \n" +
            "\t\"price\":12.3, \n" +
            "\t\"imagePath\":\"http://192.168.10.165:8080/L05_Server/images/f1.jpg\"\n" +
            "}";
    ShopInfo shopInfo = new ShopInfo();
    //解析json
    try {
        //获取JsonObject对象
        JSONObject jsonObject = new JSONObject(jsonData);
        /**获取数据
         * getInt("key")  取值 不存在 或者类型不对 报错
         optInt("key")  取值 不存在 返回默认值
         */
        int id = jsonObject.optInt("id");
        String name = jsonObject.optString("name");
        Double price = jsonObject.optDouble("price");
        String imagePath = jsonObject.optString("imagePath");
        //封装成Java对象
        shopInfo = new ShopInfo(id, name, price, imagePath);


    } catch (JSONException e) {
        e.printStackTrace();
    }

测试效果:
这里写图片描述

2、将json格式的数组[]转换为Java对象的List集合

测试数据

[
    {
        "id": 1,
        "imagePath": "http://192.168.10.165:8080/f1.jpg",
        "name": "大虾1",
        "price": 12.3
    },
    {
        "id": 2,
        "imagePath": "http://192.168.10.165:8080/f2.jpg",
        "name": "大虾2
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值