json基本使用与简介

2023-11-13

一、简介

二、json两种构造结构

三、js解析JSON

1、JSON2解析JSON

2.用eval()方法把JSON字符串转化成JSON对象.

3.使用JSON2中的JSON对象的parser()方法解析JSON字符串

4. 使用JSON2中的JSON对象的stringify ()方法把JSON对象转换成字符串

5、案例

 四、Java解析JSON


一、简介

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999(信息标准化和通信系统(由netscpace公司Brendan Eich提出, 本标准在1999年11月被ECMA General Assembly接受采纳为ECMA-262第3版。))的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言

二、json两种构造结构

{name:”小花”}对象  

  • “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
  • 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

[“aa”,”bb”] 

这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。

JSON具有以下这些形式:

对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。 {name:‘aa’}

 

示例:

var ob={name:”小花”,age:23,address:”nc”}

数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。 var arr=[“aa”,”bb”,”cc”]

 

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

 

var arr=[“小花”,”小白”];

var arr1=[];

字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

字符串(string)与C或者Java的字符串非常相似。

 

数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。

三、js解析JSON

1、JSON2解析JSON

1.访问JSON对象中的成员我们可以如下使用:

test1.js

<script type="text/javascript">

var myJSONObject = {"students": [
         {"stId": "001", "stName": "小花", "stAge": "23"},
          {"stId": "002", "stName": "小红", "stAge": "24"}

]
};

alert(myJSONObject.students[0].stName);

</script>

2.用eval()方法把JSON字符串转化成JSON对象.

把JSON字符串转化成JSON对象,可以使用eval()函数

test2.js

<script type="text/javascript">
var myObject = eval('({"name":"ss"})');
alert(myObject.name); //结果ss
<script>

 

eval()函数的速度很快,但是由于它能编译和解析任何JS程序,所以它的安全性不高,如果要求安全性,可以使用JSON的parser。

3.使用JSON2中的JSON对象的parser()方法解析JSON字符串

http://www.json.org/json2.js下载json2.js

test3.js

<script type="text/javascript" src="js/json2.js"></script>
<script type="text/javascript">
	var str='{"name":"oracleer", "age":23}';
	var ob=JSON.parse(str) ;
	alert(ob.name)
</script>

 

4. 使用JSON2中的JSON对象的stringify ()方法把JSON对象转换成字符串

<script type="text/javascript" src="js/json2.js"></script>
<script type="text/javascript">
	var json={"name":"oracleer", "age":23};
	var str=JSON.stringify(str) ;
	alert(str)
</script>

5、案例

<%--
  Created by IntelliJ IDEA.
  User: 杪&秋
  Date: 2022/12/30
  Time: 19:12
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>json</title>
    <script src="js/json2.js"></script>
    <script type="text/javascript">
        /*键值对*/
        var obj = {name:"小明",age:23,address:"杭州"};//json格式   json对象 value可以是任意类型
        console.log("键值对方式-----" + obj.address);//访问json对象

        /*数组*/
        var studnet = {studnet:[{name:"小明",age:23,score:99},{name:"小绿",age:22,score:98},{name:"小红",age:21,score:97}]}
        console.log("数组方式------"+studnet.studnet[1].score);

        /*js中evel() 将字符串转化为json对象*/
        var obj1 = eval('({name:"小冷"})');
        console.log("js中evel()方法将字符串转为为json对象-----"+obj1.name);

        /*json对象解析*/
        /*json2.js 工具函数将字符串转化为json对象*/
        var str = '{"name":"小A","age":23}';//整体字符串
        var obj2 = JSON.parse(str);//将字符串转化成JSON对象
        console.log("json工具函数parse()函数将字符串转化为json对象-----"+obj2.name);

        /*json2.js 工具函数将json对象转化为字符串 stringify()json格式字符串特殊的字符串格式*/
        var obj3 = {name:"小黑",age:88,score:99};
        var str1 = JSON.stringify(obj3);
        console.log("json工具函数stringify()函数将json对象转化为json格式字符串-----"+str1);
    </script>
</head>
<body>

</body>
</html>

 

 四、Java解析JSON

在java程序中通常会用到JSON格式作为格式化数据传输,json-lib-2.3是一个转换数据的工具。下载地址是:http://sourceforge.net/projects/json-lib/files/ 。在其网站上可以下载源代码json-lib-2.3-jdk15-sources.jar包、json-lib-2.3-jdk15-javadoc.jar文档包、json-lib-2.3-jdk15.jar核心包。将其下载下来放入项目的classpath下。在使用json-lib-2.3包时还要其它的依赖包:如下图:

package com.iotek.json;

import com.iotek.entity.Student;
import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.junit.Test;

import java.util.HashMap;
import java.util.Map;

/**
 * @Author:
 * @CreateTime: 2022-12-30  20:11
 */
public class JsonTest {
    @Test
    public void json1(){
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name","祖尔");
        jsonObject.put("age",34);
        jsonObject.put("address","上海");
        System.out.println(jsonObject.toString());//将json转化为json格式的字符串
        /*结果:{"name":"祖尔","age":34,"address":"上海"}*/
    }
    @Test
    public void json2(){
        /*数组方式*/
        JSONArray jsonArray = new JSONArray();
        jsonArray.add(new Student(1,"小黑1","男",23,99));
        jsonArray.add(new Student(2,"小黑2","男",23,99));
        jsonArray.add(new Student(3,"小黑3","男",23,99));
        jsonArray.add(new Student(4,"小黑4","男",23,99));
        System.out.println(jsonArray);
        /*结果:[{"age":23,"id":1,"name":"小黑1","score":99,"sex":"男"},{"age":23,"id":2,"name":"小黑2","score":99,"sex":"男"},{"age":23,"id":3,"name":"小黑3","score":99,"sex":"男"},{"age":23,"id":4,"name":"小黑4","score":99,"sex":"男"}]*/
    }
    @Test
    public void json3(){
        Map<String,Student> map = new HashMap<>();
        Student stu1 = new Student(1,"小黑1","男",23,99);
        map.put("studnet",stu1);
        JSONArray jsonArray = new JSONArray();
        jsonArray.add(map);
        System.out.println(jsonArray);
        /*结果:[{"studnet":{"age":23,"id":1,"name":"小黑1","score":99,"sex":"男"}}]*/
    }
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

json基本使用与简介 的相关文章

  • 如何将 Jfreechart(饼图)添加到 netbeans 的面板中

    我正在使用 netbeans gui 编辑器 并且正在尝试添加一个本身位于内部框架中的 Jfreechart 并且这个内部框架我想将其添加到面板中 正如您在此图中看到的那样 抱歉 我无法直接发布图像 因为我新手 http www flick
  • Java - 返回值是否会中断循环?

    我正在编写一些基本上遵循以下格式的代码 public static boolean isIncluded E element Node
  • 通过 node-http-proxy 保留基于 cookie 的会话

    我有一个简单的基于 Express 的 Node js Web 服务器 用于开发 JavaScript 应用程序 我将服务器设置为使用 node http proxy 来代理应用程序向在不同域和端口上运行的 Jetty 服务器发出的 API
  • JavaScript 中数组的 HTML 数据列表值

    我有一个简单的程序 它必须从服务器上的文本文件中获取值 然后将数据列表填充为输入文本字段中的选择 为此 我想要采取的第一步是我想知道如何动态地将 JavaScript 数组用作数据列表选项 我的代码是
  • Hive:如何分解嵌入 CSV 文件中的 JSON 列?

    从 CSV 文件 带有标题和管道分隔符 中 我得到了以下两个内容 其中包含一个 JSON 列 内部有一个集合 如下所示 第一种情况 使用没有名称的 JSON 集合 ProductId IngestTime ProductOrders 918
  • 如何流式传输 OpenAI 的完成 API?

    我想流式传输结果通过 OpenAI 的 API 完成 https beta openai com docs api reference completions 该文档提到使用服务器发送的事件 https developer mozilla
  • Android Studio 将音乐文件读取为文本文件,如何恢复它?

    gameAlert mp3是我的声音文件 运行应用程序时 它询问我该文件不与任何文件类型关联 请定义关联 我选择TextFile错误地 现在我的音乐文件被读取为文本文件 我如何将其转换回music file protected void o
  • Dispatcher-servlet 无法映射到 websocket 请求

    我正在开发一个以Spring为主要框架的Java web应用程序 特别使用Spring core Spring mvc Spring security Spring data Spring websocket 像这样在 Spring 上下文
  • JS用正则表达式替换数字

    我有元素的标识符 如下所示 form book 1 2 3 我想要的是用其他值替换该标识符中的第二个数字 我将函数 match 与以下正则表达式一起使用 var regexp d d d 但它返回我包含的数组 1 2 3 2 因此 当我尝试
  • 无法捕获 Spring Batch 的 ItemWriter 中的异常

    我正在编写一个 Spring Batch 流程来将数据集从一个系统迁移到另一个系统 在这种情况下 这就像使用RowMapper实现在传递给查询之前从查询构建对象ItemWriter The ItemWriter称为save我的 DAO 上的
  • 淡出和循环一组 div 的最佳方式

    假设我有以下 div div class a You are funny div div class b You are smart div div class c You are cool div 最好的展示方式是什么div a持续 5
  • 单击关闭按钮后不显示 Google 一键登录 UI

    我正在尝试按照本指南使新的谷歌一键登录工作 https developers google com identity one tap web https developers google com identity one tap web
  • 将 javascript 整数转换为字节数组并返回

    function intFromBytes x var val 0 for var i 0 i lt x length i val x i if i lt x length 1 val val lt lt 8 return val func
  • JVM:是否可以操作帧堆栈?

    假设我需要执行N同一线程中的任务 这些任务有时可能需要来自外部存储的一些值 我事先不知道哪个任务可能需要这样的值以及何时 获取速度要快得多M价值观是一次性的而不是相同的M值在M查询外部存储 注意我不能指望任务本身进行合作 它们只不过是 ja
  • 如何在Java中正确删除数组[重复]

    这个问题在这里已经有答案了 我刚接触 Java 4 天 从我搜索过的教程来看 讲师们花费了大量精力来解释如何分配二维数组 例如 如下所示 Foo fooArray new Foo 2 3 但我还没有找到任何解释如何删除它们的信息 从内存的情
  • 挂钩 Eclipse 构建过程吗?

    我希望在 Eclipse 中按下构建按钮时能够运行一个简单的 Java 程序 目前 当我单击 构建 时 它会运行一些 JRebel 日志记录代码 我有一个程序可以解析 JRebel 日志文件并将统计信息存储在数据库中 是否可以编写一个插件或
  • Select2 下拉列表动态添加、删除和刷新项目

    这让我发疯 为什么 Select2 不能在其页面上实现清晰的方法或示例如何在 Select2 上进行简单的 CRUD 操作 我有一个 select2 从 ajax 调用获取数据
  • 如何将函数内的捕获错误传递给父级

    我有这几行代码示例 想知道下面的逻辑到底如何 try var response child console log why here catch err console log should show this err function c
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户
  • 使用异步调用时如何从 javascript 更新元刷新?

    我有一个系统 它使用元刷新来注销页面 该系统会在空闲用户后进行清理 不用担心 服务器也会导致会话超时 我开始通过 ajax 进行一些操作 不是真正的 xml 但这不是重点 我可以运行从异步请求返回的javascript 所以我想知道是否可以

随机推荐

  • Java并发编程学习16-线程池的使用(上)

    线程池的使用 上 引言 1 任务和执行策略间的隐性耦合 1 1 线程饥饿死锁 1 2 运行时间较长的任务 2 设置线程池的大小 总结 引言 前面的章节介绍了任务执行框架及其实际应用的一些内容 本篇开始将分析在使用任务执行框架时需要注意的各种
  • Android Studio Debug:编码五分钟,调试俩小时

    前言 整理并积累Android开发过程中用到的一些调试技巧 通过技巧性的调试技能 辅助增强代码的健壮性 安全性 正确性 案例一 抛出明显异常 常见的 除数为0问题 class MainActivty AppCompatActivity ov
  • 第八次-字符串(一)

    字符串和多维数组 字符串 1 串的逻辑结构 串 零个或多个字符组成的有限序列 串长度 串中所包含的字符个数 空串 长度为0的串 记为 非空串通常记为 S s1 s2 sn 其中 S是串名 双引号是定界符 双引号引起来的部分是串值 si 1
  • vue数组的截取并放入一个新数组

    最近用到数组 捣鼓了好久 终于是自己想要的效果了 首先先循环遍历data中的数组 取到我要的时间年月 richengList id 0 name 你有一个会议 region 2019 12 11 id 1 name 你你有一个会议 regi
  • windows下vscode安装kubernetes环境并打开阿里云CSK

    1 通过Vscode的扩展找出kubernetes 然后点击install 2 安装完成后 会要自动提示你安装依赖项 如果不提示你可以点击下图的刷新按钮 3 windows系统好像都不能安装成功 4 所以我们需要去windows的windo
  • QT报错:multiple definition of 'qMain(int ,char**)'

    QT导入项目时 出现重定义错误 今天在导入人家完整的QT项目时 在导入之后 点击构建 出现很多重定义的问题 具体如下图所示 出现重定义错误 经过网上查找解决办法 得知是因为重复的导入项目 导致项目中项目文件重复引用了一些文件 如下图所示 解
  • Claude:Anthropic推出的新一代人工智能聊天机器人

    Claude是Anthropic研发的人工智能聊天机器人 它可以通过自然语言理解parsed理解你的消息并自动生成回复 Claude专注于人机对话 致力于提供最佳的体验与帮助 Claude具有以下主要功能 1 强大的自然语言理解能力 Cla
  • jsp页面中JSTL/EL标签引用java后台静态static字段的方法总结

    为什么使用该功能 项目中的每个页面都包含产品名称 Logo 版本等信息 我希望修改一处 其它所有的全部跟着变 有同学会说那就都引用一个页面 就Ok了 但是我希望这些信息都是可以通过后台代码修改的 修改后保存到数据库和一个静态类中 其实后台直
  • ArrayList源码解析(二)

    在末尾添加一个元素add E e public boolean add E e ensureCapacityInternal size 1 确保内部容量够用 必要的话进行扩容 否则elementData size 将会数组越界 elemen
  • 报名丨 “中国的城市化、数字技术和创新市场” ——清华大学-麻省理工学院联合训练营开始招募啦...

    世界各地的城市正竞相利用数字技术改造其城市系统 使之更有效率 更可持续 更有弹性和活力 数字技术带来了城市规划 发展 运行 治理等方面快速而深刻的变化 技术创新和城市化正在融合 以形成新的商业模式以及企业 以应对城市挑战 中国正进行着全球最
  • 力扣二叉树,根据leetcode的控制台输入快速在本地建树

    使用说明 目的 为了刷二叉树题目时根据leetcode的控制台输入快速在本地建树 例子 leetocde 控制台输入 3 9 20 null null 15 7 ide中java代码 将数值复制到数组中 并将null用 Integer MI
  • 微信小程序如何监听左上角的返回按钮

    在微信小程序中 如果页面出现多级跳转 就会出现一种恶心的bug 比如 从首页进入A页面 然后在A页面进行了点击一个新增或者编辑的B页面 操作完成之后 B级页面是会回调到A页面 然后继续在A页面进行跳转到B页面进行操作 这种循环多次之后 会发
  • SourceTree导入产品证书

    SourceTree导入产品证书 可以到我的资源中下载 SourceTree产品证书 解压后得到一个文件 sourcetree license 直接导入即可使用
  • Matlab知识点基础(一)

    最近感觉在这上面搜相应的知识点都好困难 所以自己写点总结 以免又忘了 1 循环的总结 1 1 编写MATLAB程序 计算1到100的和 for 循环 s 0 for i 1 1 100 这里分别是初始值 间隔 终止值 s s i end s
  • live555学习之二和客户端通信流程顶层

    1 创建了一个 RTSPClientConnection 类型的实例 session RTSPClientConnection 2 调用该类的处理函数 session gt incomingRequestHandler1 2 1 读取 so
  • python基础语法

    基础语法 持续学习更新中 1 变量类型 2 逻辑语句 3 类 Python内置类属性 4 错误和异常 1 变量类型 数字 字符串 字符串可以看做是字符的列表 不存在字符类型 包含一个字符的也称作字符串 创建字符串可以用单引号也可以用双引号
  • 机器学习速成课程笔记10:使用TF的基本步骤

    快速翻阅 快速学习 TensorFlow 是一个用于人工智能的开源神器 TensorFlow 是一个采用数据流图 data flow graphs 用于数值计算的开源软件库 节点 Nodes 在图中表示数学操作 图中的线 edges 则表示
  • Qt纯代码实现添加背景图片的自定义按钮

    Qt的控件中提供了按钮类 我们在调用一个按钮控件的时候 一般通过使用按钮类本身的接口函数已经够用了 在添加按钮的图标或者背景的时候可以通过调用如下所示的接口函数 void setIcon const QIcon icon 虽然Qt已经提供了
  • 异步模式之生产者消费者

    4 异步模式之生产者消费者 刚才的情况 我们一直都在讨论 一个执行者对应一个接收者的情况 下面 我们来讨论另外一种情况 多个生产者对应多应多个消费者的情况 消息类 class Message private int id private O
  • json基本使用与简介

    一 简介 二 json两种构造结构 三 js解析JSON 1 JSON2解析JSON 2 用eval 方法把JSON字符串转化成JSON对象 3 使用JSON2中的JSON对象的parser 方法解析JSON字符串 4 使用JSON2中的J