JSON的本质与常识

一、本质

JSON是一种数据交换格式。

常说的JSON格式的字符串 ==> 发送和接收时都只是一个字符串,它遵循JSON这种格式。

二、JSON的两种基本结构

  1. 对象结构

在JSON中表示为 { } 括起来的内容。k-v的键值对结构,value的数据类型可以是数字、字符串、布尔值、null、数组、对象六种类型。

{"key1":"value1","key2":"value2"}
  1. 数组结构

在JSON中表示为 [ ] 括起来的内容。数据类型可以是数字、字符串、布尔值、null、数组、对象六种类型。

["java",30,true,null,...]

复杂结构:对象和数组的组合形式

[{"key1":"value1"},{"key2":"value2"},[1,2,3]...]

三、语法注意事项

  1. 属性名必须使用双引号包裹。
  2. 字符串类型必须使用双引号。
  3. JSON最外层必须是对象或者数组格式。
  4. 不能使用undefined或者函数作为JSON的值。

四、JSON对象的转换

前端用法:

JSON转为JS对象:JSON.parse(字符串);

var obj=JSON.parse('{"a":"hello","b":"world"}') //{a:'hello',b:'world'}

JS对象转为JSON:JSON.stringfy(JSON);

var json = JSON.stringfy({a:'hello',b:'world'}); //'{"a":"hello","b":"world"}'

后端用法:

String 转为JSON:JSON.parseObject(String)

String s ="[\"1578999474151800834\",\"238\"]";
String json = "{\"age\":18,\"id\":\"12345\",\"name\":\"mark\"}";
JSONObject jsonObject = JSON.parseObject(json);
System.out.println("jsonObject="+jsonObject); 
// jsonObject={"name":"mark","id":"12345","age":18}

取出Json中的数组:JSONObject.getJSONArray("key")

String jsonArray = "{\"age\":18,\"id\":\"12345\",\"name\":\"mark\",
\"grade\":[102,115,120,90,80]}";
JSONArray grade = JSON.parseObject(jsonArray).getJSONArray("grade");
System.out.println("grade="+grade);
// grade=[102,115,120,90,80]

将一个json转换JavaBean:JSON.parseObject(jsonString, Student.class)

1、JavaBean
    Student student = JSON.parseObject(jsonString, Student.class);
2、List<JavaBean>
    Lsit<Student> listPerson = JSON.parseArray(jsonString, Student.class);
3、Map<String, Student>
    Map<String, Student> studentMap = JSON.parseObject(jsonString, 
    TypeReference<Map<String,Object>>(){});
4、List<Map<String, Object>>
     List<Map<String, Object>> studentListMap = 
    JSON.parseObject(jsonString,new Typereference<List<Map<String,Object>>>(){});
 String jsonString = "[{\"1\":{\"age\":18,\"id\":\"12345\",\"name\":\"mark\"},
    \"2\":{\"age\":19,\"id\":\"11111\",\"name\":\"markt\"}}]";
Map<String, Student> studentMap = JSON.parseObject(jsonString, 
    new TypeReference<Map<String, Student>>(){});
        System.out.println(studentMap);
        System.out.println(studentMap.get("1"));
        System.out.println(studentMap.get("2"));

Map是一个对象,JSON外面需要一个大括号。多个

String jsonString = "[{\"1\":{\"age\":18,\"id\":\"12345\",\"name\":\"mark\"},
    \"2\":{\"age\":19,\"id\":\"11111\",\"name\":\"markt\"}}]";
Map<String, Student> studentMap = JSON.parseObject(jsonString, 
    new TypeReference<Map<String, Student>>(){});
        System.out.println(studentMap);
// {"1":{"name":"mark","id":"12345","age":18},"2":{"name":"markt","id":"11111","age":19}}
        System.out.println(studentMap.get("1"));
// {"name":"mark","id":"12345","age":18}
        System.out.println(studentMap.get("2"));
// {"name":"markt","id":"11111","age":19}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值