json使用总结

注意:

1)json解析是好事操作,最好不要放到主线程里;

2)Json数据到实体模型之间的转化特别容易出错,特别是数据类型,一定要注意;

3)JSONArray    JSONObject   这两个对象的使用;

4)如何把字符串转化成json对象? new JSONObject(str)

5)如何获取属性的值?  String model = (String) jsonObject.get("model"); 强转类型;

6)定义json数据的时候,最好别使用太多层的嵌套,否则解析可能会出现异常;


 

json字符串转化成json对象和json数组

JsonObject jsonObject=new JsonObject(str)   { ""="", }  属性都是以兼职对的形式存在的

JsonArray jsonArray=new JsonArray(str)   [ ]

 

在线json解析工具:

http://www.bejson.com/json2javapojo/ 

使用的json包:  

compile 'com.google.code.gson:gson:2.5'   

 

Json语法规则:

1)Json属性数据书写格式  “” : ””,  以键值对的形式存放,键和值都要用双引号括起来。

2)某一个属性值可以是boolean类型:“hasCollect”:true,  

3)两个键值对之间,使用逗号分隔。 {"姓名" : "大憨" , "年龄" : 24}

4)一个对象中,可以包含多个属性值。

5{ }  [ ]  对象  数组。 { "firstName": "Brett", "lastName":"McLaughlin" }

6{ "people": [

   { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },

   { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},

   { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }    //没有逗号

]}   //充分体现了属性值是数组

People表示一个键,它的值是数组,其中有三个对象。

数组里面可以包含三个json对象,每个对象都是通过,分割开的。

在面向对象的语言中,key为对象的属性value为对应的属性值,这个属性值的类型可以是 数字、字符串、数组对象几种。

 ——————————————————————————————>

"_status":/ˈsteitəs/,统一返回的请求头,里面是服务器端的响应头信息.比如响应码等等

特别要注意中文与英文引号的区别,出错一般都是在这里

 ——————————————————————————————>

对象在json中表示为“{}”扩起来的内容,数据结构为 {keyvalue, keyvalue,...}的键值对的结构。

数组:数组是中括号“[]”扩起来的内容,数据结构为 ["java","javascript","vb",...],以逗号分隔。

{ "firstName": "Brett" }---->firstName=Brett,等价于

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }

   { "people": [

   { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },

   { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},

   { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }    //没有逗号

]}   //充分提醒了属性值是数组

 

"学生" : { 

   [

   {"姓名" : "小明" , "年龄" : 23},

   {"姓名" : "大憨" , "年龄" : 24}

   ]

  }

 说明:此Json对象包括了一个学生数组,而学生数组中包含两个学生对象。

(value)可以是双引号括起来的字符串(string)、数值(int)truefalse、 null、对象(object)或者数组(array)。这些结构可以嵌套。

——————————————————————————————>

Json对象:{}   一个json对象可以包含多组属性。

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }

——————————————————————————————>

json解析异常的处理:后台的数据结构、数据类型一定要确定的、不能经常变更的。

解决方案:后台的数据类型全部都是String类型,到移动端后,自己转换数据类型。

 ——————————————————————————————>

写代码要严谨:

对空指针异常的处理:对控件赋值前,先判断从服务器端获取的数据是否为空。

——————————————————————————————>


——————————————————————————————>

  1) 只需要复制键名就好了,值是从服务器端读取的。
  2) 解析json的时候,每个对象中的属性不完全一样,一定要注意。
  3) 解析json的时候,数据类型千万别写错了,要不然很难查找的。
  5) 集合里面的对象所具有的字段(点开集合,点开其中的某一个对象)
  6) 类与类之间是并列关系
  7)  public List<Integer> extend;里面全是数字  使用Integer类型,集合里面的数据类型
  8) 别忘了添加toString方法比较方便


  接收到服务器端的json字符串,按照json字符串的格式,编写一个模型。
  使用断点调试,查看json对象里面的信息  fromJson()方法的返回值
  把那这种形式看做是对象就好了



public class Object {
//这是两种数据类型   类
public _status st;
public  User  u;

public class _status{
public int _code;
public String _message;
}

public class User{
public  String  uid;
}
}

public class NewCenterInfo {
/** 第一个是集合,第二个是集合,第三个是个普通的值 **/
public List<NewCenterData> data;
public List<Integer> extend;
public int retcode;

public class NewCenterData {
public List<ChildrenInfo> children;
public int id;
public String title;
public String type;
}

public class ChildrenInfo {
public String id;
public String title;
public String type;
public String url;
}
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
esp32使用json的步骤可以分为以下几步: 1. 引用中的方法,使用`deserializeJson`函数对接收到的json文件进行解析。该函数接受两个参数,第一个参数是建立的DynamicJsonDocument对象,第二个参数是获取到的json文件(类型为String)。 2. 根据引用中的内容,了解JSON的基础概念、语法规则和数据类型。JSON包括数字、字符串、逻辑值、数组和对象等数据类型。 3. 以引用中的解析JSON数据为例,可以使用`cJSON_Parse`函数将给定的JSON字符串转换为cJSON对象。 4. 使用相应的库函数来操作cJSON对象,例如使用`cJSON_GetObjectItem`函数根据键获取对应的值,使用`cJSON_GetArrayItem`函数根据下标获取cJSON对象数组中的对象,使用`cJSON_AddStringToObject`函数新增一个字符串类型的字段到JSON格式的数据等。 5. 在使用完cJSON对象后,使用`cJSON_Delete`函数释放链表占用的内存空间。 总结起来,使用ESP32处理JSON数据的过程包括解析JSON数据、操作cJSON对象以及释放内存空间等步骤。根据具体的需求和场景,可以使用不同的库函数来实现相应的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ESP32超详细学习记录:JSON解析(利用ArduinoJson库)](https://blog.csdn.net/qq_41650023/article/details/124668884)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【ESP32_8266_WiFi (九)】JSON基础](https://blog.csdn.net/K3169/article/details/127838227)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [ESP8266学习笔记(8)——第三方库cJSON使用](https://blog.csdn.net/qq_36347513/article/details/86691835)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值