json基本使用与简介

news2024/9/28 9:32:51

一、简介

二、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":"男"}}]*/
    }
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/129315.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【模型部署】人脸检测模型DBFace C++ ONNXRuntime推理部署(1)

系列文章目录 【模型部署】人脸检测模型DBFace C ONNXRuntime推理部署&#xff08;0&#xff09; 【模型部署】人脸检测模型DBFace C ONNXRuntime推理部署&#xff08;1&#xff09; 【模型部署】人脸检测模型DBFace C ONNXRuntime推理部署&#xff08;2&#xff09; 文章目录…

深度学习训练营之灵笼人物识别

深度学习训练营之灵笼人物识别原文链接环境介绍前置工作设置GPU导入数据数据查看数据预处理加载数据可视化数据检查数据配置数据集prefetch()功能详细介绍&#xff1a;归一化查看归一化后的数据构建VGG-19网络VGG优点VGG缺点利用官方给到的网络网络结构编译模型训练结果可视化预…

第03讲:GitHub的使用

一、创建远程仓库 访问GitHub官方网站&#xff0c;并创建账号&#xff0c;然后按照以下图示创建项目 复制仓库地址 二、远程仓库的操作 命令作用git remote -v查看当前所有远程地址别名git remote add 别名 远程地址起别名git push 别名 分支推送本地分支上的内容到远程仓库…

vscode+opencv+mingw+cmake配置vscode下的opencv环境

目录介绍安装VsCode安装mingw安装cmake安装opencv&#xff0c;以及其扩展库 opencv_contrib安装python利用cmake生成opencv的Makefile文件cmake命令进行编译&#xff0c;安装配置opencv环境变量配置VSCODE测试DEMO介绍 参考链接&#xff1a;https://www.cnblogs.com/czlhxm/p/…

教育行业回访话术

近些年来&#xff0c;随着知识经济的快速发展&#xff0c;教育市场呈现良好的增长态势。越来越多的人开始通过参加各种培训来提升自己&#xff0c;教育行业竞争十分激烈。 前言 近些年来&#xff0c;随着知识经济的快速发展&#xff0c;教育市场呈现良好的增长态势。而且由于受…

人力资源软件对中小企业的七点重要性

对于中小企业&#xff08;SMB&#xff09;来说&#xff0c;员工就意味着一切。你的员工几乎掌握着企业的整体增长和发展&#xff0c;他们可以成就企业&#xff0c;但也能破坏企业的发展。为了提高员工效率&#xff0c;中小型企业需要出色的人力资源管理。员工只有在受到重视和培…

被新手忽视的 自谐振频率点

在MHz的DCDC和RF LNA电路中&#xff0c;被新手忽视的 自谐振频率点Self-Resonant Frequency 计算公式为 下图显示了 1μF&#xff0c;封装为 1206 的陶瓷电容器的阻抗&#xff08;MLCC有经典的V型阻抗-频率曲线。随着频率升高&#xff0c;寄生电感的影响开始凸显&#xff0c;阻…

Faster RCNN网络源码解读(Ⅴ) --- GeneralizedRCNNTransform图像初始化代码解析

目录 一、代码作用&#xff08;transform.py&#xff09; ​编辑 二、代码解析 2.1 GeneralizedRCNNTransform类 2.1.1 初始化函数__init__ 2.1.2 normalize标准化处理 2.1.3 将图像以及bndbox进行缩放resize 2.1.4 batch_images 2.1.5 正向传播 forward 2.1.6 后…

分布式系统共识机制:一致性算法设计思想

分布式系统共识机制&#xff1a;一致性算法设计思想Paxos 算法节点角色算法流程Raft 算法节点角色核心机制leader选举日志复制PBFTHotstuff门限签名核心机制二阶段提交协议三阶段提交协议这次以一个宏观的角度去总结 自己学习过的一致性算法。一致性算法的目标就是让分布式系统…

Java开发 - 树(二叉树,二叉排序树,红黑树)

目录 前言 你好&#xff0c;认识一下&#xff0c;我是树 二叉树与二叉排序树 二叉排序树特点 为什么说二叉排序树查询效率要高于链表呢&#xff1f; 元素的类型 比较器 手写二叉排序树 定义一棵二叉树 增加元素 查询元素 修改元素 删除元素 遍历二叉树 重写toS…

JAVA注解处理API实战

简介 ​ 插件化注解处理(Pluggable Annotation Processing)API JSR 269提供一套标准API来处理Annotations( JSR 175),实际上JSR 269不仅仅用来处理Annotation&#xff0c;它建立了Java 语言本身的一个模型,它把method、package、constructor、type、variable、enum、annotatio…

工业远程I/O模块 CANopen 通讯

1.对象字典OD 对象字典是每个CANopen设备必须具有的功能&#xff0c;它包含了设备所有可以被访问的参数&#xff0c;客户端使用索引(Index)和子索引(Sub-index)来读写对象字典里的参数。 对象字典主要用来设定设备组态及进行非即时的通讯。每个对象采用16位索引的方式来寻址&…

01Editor最新破解

文章目录01Editor最新版注册算法逆向1.定位注册算法代码2.整体注册算法3.Check1算法分析4.Check2算法分析5.获得正确的任意用户名对应的序列号01Editor最新版注册算法逆向 1.定位注册算法代码 【版本】13.0.164bit\textcolor{green}{【版本】13.0.1\ 64bit}【版本】13.0.1 64b…

Redis集群系列七 —— 散列插槽分析

集群状态日志分析 Redis 分片集群引入了一个逻辑上的插槽或哈希槽概念&#xff0c;将集群划分为16384&#xff08;0~16383&#xff09;个槽位&#xff0c;集群中的每个节点占据一部分槽位数&#xff0c;在逻辑上将集群中的所有节点构成了一块完整的内存空间。 这个日志中可以通…

对象定义-解构-枚举属性遍历以及对象内函数

属性名表达式 定义对象的属性有两种方式 1、直接使用标识符作为属性名 obj.name 2、以表达式作为属性名 obj[ab] 10 let obj {} obj.name 孙悟空 // 孙悟空 obj[a b] 10 // 10 console.log(obj); // {name: 孙悟空, ab: 10}es5中字面量定义对象只能使用一种方法 var …

4.3.3、划分子网的 IPv4 地址

若有一个大型的局域网需要连接到因特网 若需要申请一个 C 类网络地址&#xff0c;其可分配的 IP 地址数量只有 254254254 个&#xff0c;不够使用 因此申请了一个 B 类网络地址&#xff0c;其可分配的 IP 地址数量达到了 655346553465534 个 给每台计算机和路由器的接口分配一…

实验九、消除互补输出级交越失真方法的研究

一、题目 互补输出级交越失真消除方法的研究。 二、仿真电路 基本互补电路和消除交越失真互补输出级如图1所示。晶体管采用 NPN 型晶体管 2N3904 和 PNP 型晶体管 2N3906。二极管采用 1N4009。 在实际的实验中&#xff0c;几乎不可能得到具有理想对称性的 NPN 型和 PNP 型管…

网络编程套接字----UDP协议

文章目录前言一、理解源IP地址和目的IP地址二、认识端口号理解"端口号"和"进程ID"理解源端口号和目的端口号三、认识TCP协议四、认识UDP协议五、网络字节序六、socket编程接口socket常见APIsockaddr结构sockaddr结构sockaddr_in 结构in_addr结构七、地址转…

第三方软件测试▏有效保障软件产品质量的关键性步骤

软件测试作为软件产品生命周期中不可或缺的重要步骤&#xff0c;被许多软件企业所重视。主要是通过对软件产品进行全面的测试&#xff0c;确保软件质量以及满足用户需求。但软件测试不仅仅是个简单的检测工作&#xff0c;而是一个系统性的、有组织性的测试过程&#xff0c;包含…

Linux:安装 telnet 命令

我是 ABin-阿斌&#xff1a;写一生代码&#xff0c;创一世佳话&#xff0c;筑一览芳华。如果小伙伴们觉得不错就一键三连吧~ 声明&#xff1a;原文地址&#xff1a;https://www.pudn.com/news/6332b44a272bb74d44053074.html 其他参考文章&#xff1a;https://www.cnblogs.com…