JSON(JavaScript对象表示法)

JSON

一、概念

JavaScript Object Notation,意为JavaScript对象表示法,是一种存储和交换信息的数据格式,比xml更小、更快、更易于解析

二、语法

1. 基本规则

  1. 数据在键值对中,数据由键值对表示

    1. :键可以用引号也可以不用引号
    2. 值:取值可以为:
      • 数字(整数、浮点数),直接写
      • 字符串(在引号中)
      • 逻辑值(true or false)
      • 数组(在方括号中)
      • 对象(json对象,在花括号中)
      • null
  2. 数据由逗号分隔
  3. 花括号保存对象
  4. 方括号保存数组

2. 获取数据

  1. json对象.键名
  2. json对象[”键名“]:注意有引号
  3. 数组对象[索引]
    for(key in person) {
        alert(key + " : " + person[key]);
    }

三、JSON和java对象的转换

JSON解析器:Jsonlib(官方)、Gson(Google)、fastjson(Alibaba)、Jackson

1. java对象转为JSON

  1. 导入Jackson的相关jar包
  2. 创建Jackson核心对象ObjectMapper
    1. writeValue(参数, obj):参数的取值

      1. File:将obj对象转换为json字符串,并保存到指定的文件
      2. Writer:将obj对象转换为json字符串,并填充到指定的字符输出流
      3. OutputStream:将obj对象转换为json字符串,并填充到指定的字节输出流
    2. writeValueAsString(obj):将java对象转为json字符串
  3. 调用ObjectMapper的相关方法进行转换
    Person person = new Person("David", 18, "男");
    
    ObjectMapper mapper = new ObjectMapper();
    
    String json_person = mapper.writeValueAsString(person);
    mapper.writeValue(new File("d://a.txt"), person);
  4. 注解:当java对象有的成员变量是Date类型的时候,如果直接转为JSON得到的值是毫秒值,可以使用注解解决这个问题:在定义的类的成员变量上添加这两个注解:
    1. @JsonIgnore:表示在转为JSON时不考虑这个键值对
    2. @JsonFormat:表示在转为JSON时可以转为指定的格式

      @JsonFormat(pattern = "yyyy-mm-dd")

  5. 复杂的java对象:
    1. List:转为一个数组:[]
    2. Map:转为一个JSON对象:{}

2. JSON转为java对象

  1. 创建Jackson核心对象ObjectMapper
  2. ObjectMapper对象调用readValue方法:readValue(json字符串数据,Class)
    String json = "{\"name\":\"david\",\"age\":18,\"gender\":\"男\"}";// 键值对要用双引号、单引号报错
    ObjectMapper mapper = new ObjectMapper();
    
    Person person = mapper.readValue(json, Person.class);

四、Demo:用户名是否存在的校验

实现逻辑:

  1. 当输入用户名的文本框失去焦点(blur事件),向服务器发送异步请求
  2. 服务器端接收请求,查询数据库,将结果填充进字符输入流

客户端:

$("#username").blur(function () {
    var username = $(this).val();
    $.get("findUsernameServlet", {username:username}, function (data) {// data 是服务端响应的数据
        var span = $("#span_username");

        if (data.userExist) {
            span.css("color", "red");
            span.html(data.msg);
        } else {
            span.css("color", "green");
            span.html(data.msg);
        }
    }, "json");// 格式为json
});

服务端:

response.setContentType("text/html;charset=utf-8");

String username = request.getParameter("username");

Map<String, Object> map = new HashMap<String, Object>();

if ("cat".equals(username)) {
    // 用户名已经存在,应该去查找数据库判断
    map.put("userExist", true);
    map.put("msg", "用户名已经存在");
} else {
    // 用户名没有存在
    map.put("userExist", false);
    map.put("msg", "用户名可用");
}

ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(response.getWriter(), map);

注意:需要把服务器写会的数据当做JSON处理,两种方法:

  1. 在get/post请求里指定数据格式 “json”
  2. 在服务端指定编码、格式 response.setContentType("application/json;charset=utf-8");

原文地址:https://www.cnblogs.com/zhuobo/p/10854411.html

时间: 2024-10-08 14:47:21

JSON(JavaScript对象表示法)的相关文章

8.7 JSON存储数据方式(JavaScript对象表示法)

JSON JavaScript 对象表示法(JavaScript Object Notation) 是一种存储数据的方式. 一.创建JSON对象 var gareen = {"name":"盖伦","hp":616}; 这样就创建了一个JSON 对象 JSON对象由 名称/值对组成 名称和值之间用冒号:隔开 名称必须用双引号" 包含起来 值可以是任意javascript数据类型,字符串,布尔,数字 ,数组甚至是对象 不同的名称/值对之间

遍历 JSON JavaScript 对象树中的所有节点

我想要遍历 JSON 对象树中,但为何找不到任何一间图书馆.这似乎是不难,但感觉就像重新发明轮子. 在 XML 中有很多教程演示如何遍历 XML DOM 树:( 解决方法 1: 如果你认为 jQuery 是什么样的overkill这种原始的任务,你可以这样做: //your object var o = { foo:"bar", arr:[1,2,3], subo: { foo2:"bar2" } }; //called with every property an

javascript对象表示法

JSON: JavaScript Object Notation(JavaScript 对象表示法)JSON 是存储和交换文本信息的语法.类似 XML.JSON 比 XML 更小.更快,更易解析..................什么是 JSON ?JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)JSON 是轻量级的文本数据交换格式JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言

JSON数据表示格式简介(JavaScript对象表示法)

[1] JSON简介    > JSON全称 JavaScript Object Notation    > 类似于JS中对象的创建的方法    > JSON和XML一样,都是一种表示数据的格式    > 但是JSON比XML的存储和解析性能要高的多,JSON要比XML高个30%左右.    <user>        <name>sunwukong</name>        <age>18</age>        &

JSON和JavaScript对象

var obj={width:100,height:200},这样的并不叫JSON,并且JSON只是一种数据格式,并不是具体的实例. 但很多人把这样的JS对象当成JSON,下面把这个问题讲清楚 一.JSON是什么?(JSON和JavaScript对象有什么区别?)如何把JS对象转化为JSON字符串?又如何把JSON字符串转化为JavaScript对象? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,JSON格式的数据,主要是为了跨平台交流数据用的.

深入学习JavaScript对象

JavaScript中,除了五种原始类型(即数字,字符串,布尔值,null,undefined)之外的都是对象了,所以,不把对象学明白怎么继续往下学习呢? 一.概述 对象是一种复合值,它将很多值(原始值或其他对象)聚合在一起,可通过属性名访问这些值.而属性名可以是包含空字符串在内的任意字符串.JavaScript对象也可以称作一种数据结构,正如我们经常听说的“散列(hash)”.“散列表(hashtable)”.“字典(dictionary)”.“关联数组(associative array)”

JavaScript大杂烩5 - JavaScript对象的若干问题

1. 类型检查:instanceof与typeof 这是两个相似的操作符,instanceof用于检测函数的实例类型,主要是在面向对象编程中检查new出来的对象类型,需要注意instanceof是检查function对象的,前面实现的复制继承中的例子就不适用于使用instanceof来检查继承关系了.typeof,它用于检测变量的类型,在实际情况中应用的不是很多,稍微了解一下就可以了. 在使用typeof之前,有一点需要确认,那就是string与String不是同一个类型,这个不用多说了,我们前

javascript对象的学习与总结

一.对象是javascript的基本数据类型,是一种复合值,是属性的容器,属性是由键值对组成的. 二.Js中对象分为:内置对象,宿主对象,自定义对象 三.对象的创建 (1)对象直接量:由若干个名/值对组成的映射表,是一个表达式,这个表达式的每次运算都创建并初始化一个新的对象. 例如: var empty_oject={};定义没有任何属性的对象 var point={x:0,y:0};定义两个属性的对象 var stooge={ name:"xiyin", sex:"girl

ajax操作之操作 JavaScript 对象

通过请求获取充分格式化的HTML虽然很方便,但这也意味着必须在传输文本内容的同时也 传输很多HTML标签.有时候,我们希望能够尽量少传输一些数据,然后马上处理这些数据.在 这种情况,我们希望取得能够通过JavaScript进行遍历的数据结构.          使用jQueiy的选择符可以遍历和操作取得的HTML结构,但是还有一种JavaScript内置的数据 格式,既能减少数据传输量,也会减少编码量.1.取得JSON         前面我们曾经看到过,JavaScript对象是由一些“键-值