从零开始学JSON(修订版)

从0开始学习JSON库(一) 从零开始学习JSON库(一) LINDA 2018/5/8 前几天看了叶神的知乎专栏从零开始的JSON库教程,叶老师很详尽地跟我们讲解一个项目的正确打开方式: 1. 要做一个项目首先要知道做什么,即项目要实现的协议是怎么样的,可以先看相关的RFC文档。 2. 知道大概要做什么了,我们先从简单的入手,构思相应的数据结构,函数接口,罗列出来。 3. 先写对应接口的单元测试,当然,我们不... 阅读详情

前言

只有光头才能变强。

文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y

什么是JSON

JSON:JavaScript Object Notation 【JavaScript 对象表示法】

JSON 是存储和交换文本信息的语法。类似 XML。

JSON采用完全独立于任何程序语言的文本格式,使JSON成为理想的数据交换语言S

为什么需要JSON

提到JSON,我们就应该和XML来进行对比。XML也是一种存储和交换文本信息的手段。那么JSON好在哪里呢??

JSON 比 XML 更小、更快,更易解析。

640?wx_fmt=jpeg

更加容易创建JavaScript对象

var p = {'city':['北京','上海','广州','深圳']};for(var i=0;i<p.city.length;i++){    document.write(p.city[i]+"<br/>");}'city':['北京','上海','广州','深圳']};
for(var i=0;i<p.city.length;i++){
    document.write(p.city[i]+"<br/>");
}

JSON语法

客户端与服务端的交互数据无非就是两种

于是乎,JSON所表示的数据要么就是对象,要么就是数组

JSON语法是javaScript语法的子集,javaScript用[]中括号来表示数组,用{}大括号来表示对象,JSON亦是如此

JSON数组:

var employees = [{ "firstName":"Bill" , "lastName":"Gates" },{ "firstName":"George" , "lastName":"Bush" },{ "firstName":"Thomas" , "lastName": "Carter" }];
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName": "Carter" }
];

JSON对象

var obj = {    age: 20,    str: "zhongfucheng",    method: function () {        alert("我爱学习");    }};

    age: 20,
    str: "zhongfucheng",
    method: function () {
        alert("我爱学习");
    }

};

当然啦,数组可以包含对象,在对象中也可以包含数组


解析JSON

javaScript原生支持JSON的,我们可以使用eval()函数来解析JSON,把JSON文本数据转换成一个JavaScript对象。

function test() {    //在写JOSN的时候,记得把带上逗号    var txt = "{a:123," +            "b:'zhongfucheng'}";    //使用eval解析JSON字符串,需要增添()    var aa = eval("(" + txt + ")");    alert(aa);}
    //在写JOSN的时候,记得把带上逗号
    var txt = "{a:123," +
            "b:'zhongfucheng'}";

    //使用eval解析JSON字符串,需要增添()
    var aa = eval("(" + txt + ")");
    alert(aa);

}

效果

640?wx_fmt=png

不用框架时将JavaBean转成JSON

但是,我们不一定使用框架来做开发呀。因此,我们还得学习使用第三方库来将JavaBean对象、集合转成JSON

导入开发包

事例代码

package cn.itcast.javaee.js.bean2json;import net.sf.json.JSONArray;import java.util.*;/** * 使用第三方工具,将JavaBean对象/List或Set或Map对象转成JSON  * @author AdminTC */public class TestBean2Json {    private static void javabean2json() {        City city = new City(1,"广州");        JSONArray jSONArray = JSONArray.fromObject(city);        String jsonJAVA = jSONArray.toString();        System.out.println(jsonJAVA);        //[{"id":1,"name":"广州"}]    }    private static void list2json() {        List<City> cityList = new ArrayList<City>();        cityList.add(new City(1,"广州"));        cityList.add(new City(2,"珠海"));        JSONArray jSONArray = JSONArray.fromObject(cityList);        String jsonJAVA = jSONArray.toString();        System.out.println(jsonJAVA);        //[{"id":1,"name":"广州"},{"id":2,"name":"珠海"}]    }    private static void set2json() {        Set<City> citySet = new LinkedHashSet<City>();        citySet.add(new City(1,"广州"));        citySet.add(new City(2,"珠海"));        JSONArray jSONArray = JSONArray.fromObject(citySet);        String jsonJAVA = jSONArray.toString();        System.out.println(jsonJAVA);        //[{"id":1,"name":"广州"},{"id":2,"name":"珠海"}]    }    private static void javabeanlist2json() {        List<City> cityList = new ArrayList<City>();        cityList.add(new City(1,"中山"));        cityList.add(new City(2,"佛山"));        Province province = new Province(1,"广东",cityList);        JSONArray jSONArray = JSONArray.fromObject(province);        String jsonJAVA = jSONArray.toString();        System.out.println(jsonJAVA);        /*          [             {              "id":1,              "name":"广东"              "cityList":[{"id":1,"name":"中山"},{"id":2,"name":"佛山"}],             }          ]          */    }    private static void map2json() {        List<City> cityList = new ArrayList<City>();        cityList.add(new City(1,"中山"));        cityList.add(new City(2,"佛山"));        Map<String,Object> map = new LinkedHashMap<String,Object>();        map.put("total",cityList.size());//表示集合的长度        map.put("rows",cityList);//rows表示集合        JSONArray jSONArray = JSONArray.fromObject(map);        String jsonJAVA = jSONArray.toString();        System.out.println(jsonJAVA);        //[{"total":2,"rows":[{"id":1,"name":"中山"},{"id":2,"name":"佛山"}]}]        jsonJAVA = jsonJAVA.substring(1,jsonJAVA.length()-1);        System.out.println(jsonJAVA);    }}

import net.sf.json.JSONArray;

import java.util.*;

/**
 * 使用第三方工具,将JavaBean对象/List或Set或Map对象转成JSON 
 * @author AdminTC
 */

public class TestBean2Json {
    private static void javabean2json() {
        City city = new City(1,"广州");
        JSONArray jSONArray = JSONArray.fromObject(city);
        String jsonJAVA = jSONArray.toString();
        System.out.println(jsonJAVA);
        //[{"id":1,"name":"广州"}]
    }
    private static void list2json() {
        List<City> cityList = new ArrayList<City>();
        cityList.add(new City(1,"广州"));
        cityList.add(new City(2,"珠海"));
        JSONArray jSONArray = JSONArray.fromObject(cityList);
        String jsonJAVA = jSONArray.toString();
        System.out.println(jsonJAVA);
        //[{"id":1,"name":"广州"},{"id":2,"name":"珠海"}]
    }
    private static void set2json() {
        Set<City> citySet = new LinkedHashSet<City>();
        citySet.add(new City(1,"广州"));
        citySet.add(new City(2,"珠海"));
        JSONArray jSONArray = JSONArray.fromObject(citySet);
        String jsonJAVA = jSONArray.toString();
        System.out.println(jsonJAVA);
        //[{"id":1,"name":"广州"},{"id":2,"name":"珠海"}]
    }
    private static void javabeanlist2json() {
        List<City> cityList = new ArrayList<City>();
        cityList.add(new City(1,"中山"));
        cityList.add(new City(2,"佛山"));
        Province province = new Province(1,"广东",cityList);

        JSONArray jSONArray = JSONArray.fromObject(province);
        String jsonJAVA = jSONArray.toString();
        System.out.println(jsonJAVA);
        /*
          [
             {
              "id":1,
              "name":"广东"
              "cityList":[{"id":1,"name":"中山"},{"id":2,"name":"佛山"}],
             }
          ]
          */

    }
    private static void map2json() {

        List<City> cityList = new ArrayList<City>();
        cityList.add(new City(1,"中山"));
        cityList.add(new City(2,"佛山"));

        Map<String,Object> map = new LinkedHashMap<String,Object>();
        map.put("total",cityList.size());//表示集合的长度
        map.put("rows",cityList);//rows表示集合

        JSONArray jSONArray = JSONArray.fromObject(map);
        String jsonJAVA = jSONArray.toString();
        System.out.println(jsonJAVA);
        //[{"total":2,"rows":[{"id":1,"name":"中山"},{"id":2,"name":"佛山"}]}]

        jsonJAVA = jsonJAVA.substring(1,jsonJAVA.length()-1);
        System.out.println(jsonJAVA);
    }

}

把要解析成JSON 的javaBena对象、集合放进下面这段代码即可!

JSONArray jSONArray = JSONArray.fromObject(map);

无论放进去什么,返回的都是数组

总结

640?wx_fmt=jpeg

这里写图片描述

最后

乐于输出干货的Java技术公众号:Java3y。公众号内有200多篇原创技术文章、海量视频资源、精美脑图,不妨来关注一下!

640?wx_fmt=jpeg

有帮助?好看!转发!640


sajson:C++11的高性能JSON解析库 本文还有配套的精品资源,点击获取 简介: sajson 是一个面向C++11标准的轻量级、高性能JSON解析库,特别适合处理大量数据。该库利用C++11的新特性提升代码效率和可读性,具有原地解析的技术减少内存使用,并提供了简单易用的API。它通过优化的解析策略和紧凑的数据结构实现快速处理JSON数据,适用于各种规模的应用程序。 1. sajson库特... 阅读详情

相关推荐

爬取百度图片

最开始,我们想要爬取图片,首先需要打开百度图库,然后在搜索栏中输入自己想要的图片(比如说壁纸)。接着右键检查,点击网络:起初可能没有名称信息,刷新界面就可以了。打开信息,查看标头内容可以看到请求URL为:复制这串URL,然后在浏览器中打开这个就是我们搜索的壁纸图片的网页内容。怎么找到图片的URL呢?在上述内容中,找到data,可以发现里面每隔一个aiEditData,下面代码的形式是一样的,就相当于一张图片。

weixin_54143563的博客 1940

从0到1上手JSON,这篇教程就够了

JSON是一种轻量级的数据交换格式,由Douglas Crockford在20世纪90年代末提出。它采用键值对和数组结构,支持字符串、数字、布尔值等数据类型,具有严格的语法规则。JSON广泛应用于Web开发中的前后端数据交互、配置文件存储和NoSQL数据库等领域。在编程语言中,JavaScript通过JSON.parse()和JSON.stringify()方法处理JSON数据,Python则使用json模块的loads()和dumps()函数。JSON还常用于用户管理系统和项目配置文件中。

大雨淅淅的博客 3021

lattice 黑盒子的生成和使用(Creating Your Own Black Box Modules)

很多客户,特别是外包项目,需要做黑盒子,防止他人看到源码,那么这就需要对相关的源码打包加封了。diamond help 说的也是模糊模糊的,这次给出实际验证过的流程。 1.先将要加封的模块间一个工程,建好工程,写好代码之后,模块名字叫做crosslink(这个使用黑盒子的时候要用),代码如下: module crosslink( output wire[3:0] led, input wire clk, input wire reset ); reg [29:0] cnt; reg [3:0] led1;

qq_39633876的博客 1481

从零开始,轻松学会JSON数据收集与分析

在数据挖掘领域,收集JSON格式文章资料是关键环节。本篇文章将教您有效地采集和分析这种形式的信息,以满足你对更高效率和准确性的需求。1.了解json格式:首先,需明确json格式定义。所谓JSON(JavaScript Object Notation)乃轻便型数据交换格式,易于识别与书写。

Xgvafdj58的博客 641

从SPI协议到文件系统:手把手教你用HAL库给W25Q16移植FATFS(附扇区管理优化方案)

本文详细介绍了如何在STM32平台上,通过HAL库的SPI接口为W25Q16 Flash芯片移植FATFS文件系统。文章从SPI通信基础讲起,深入解析了FATFS底层驱动(diskio.c)的移植要点,并重点探讨了针对W25Q16的4KB物理扇区特性进行扇区管理优化的两种方案,旨在帮助开发者构建稳定高效的文件存储方案。

happy2的博客 1043

Modbus CRC和LRC算法研究及代码实现

一、CRC(循环冗余校验) 1 CRC16实现流程 XOR = 异或 N = 字节的信息位 POLY = CRC16 多项式计算 = 1010 0000 0000 0001 (生成多项式 = 1 + x2 + x15 + x16) 在CRC16中,发送的第一个字节位低字节 2 CRC16实例推导 3 CRC16代码实现 unsigned short CRC16(unsigned char *a...

Hi, Boy 2891

从零开始的 JSON 库教程 笔记

从零开始的 JSON 库教程(一):启程我们要实现的 JSON 库,主要是完成 3 个需求:把 JSON 文本解析为一个树状数据结构(parse)。 提供接口访问该数据结构(access)。 把数据结构转换成 JSON 文本(stringify)。在本单元中,我们只实现最简单的 null 和 boolean 解析。单元测试M大关于单元测试的讲解,让我眼前一亮,很有意思的一种测试驱动编程方法。通过

icevmj 6079

人工智能面试总结-Python

B站:啥都会一点的研究生 公众号试读:啥都会一点的研究生 目录说说Python程序运行过程?说说Python的作用域?说说Python的数据结构?说说Python中可变与不可变类型?说说进程与线程?说说Python中的多线程?说说Python中的多进程?说说Python互斥锁与死锁?说说Lambda?说说Python的深拷贝与浅拷贝?说说Python多线程是否能用多个CPU,为什么?说说Python垃圾回收机制?说说Python里的生成器?说说迭代器与生成器的区别?说说Python 列表的 del,rem.

啥都生的博客 1万+

从零开始的 JSON 库教程(一):启程 学习整理笔记

原网址:从零开始的 JSON 库教程 - 知乎 JSON 是什么? JSON(JavaScript Object Notation)是一个用于数据交换的文本格式。 JSON 是树状结构,只包含 6 种数据类型: null: 表示为 null boolean: 表示为 true 或 false number: 一般的浮点数表示方式,在下一单元详细说明 string: 表示为 "..." array: 表示为 [ ... ] object: 表示为 { ... } 我们.

zhongh58的博客 693

ComfyUI整合包、秋叶ComfyUI、Florence节点报错下载并加载Florence2模型No module named ‘timm.layers‘、ComfyUI报错解决

步骤操作1打开2地址栏输入cmd并回车3输入命令:4安装完成后重新打开 ComfyUI,执行工作流,即可解决报错。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1243

华为OD机试2025C卷 - 精准核酸检测 (C++ & Python & JAVA & JS & GO)

华为OD机试2025C卷 精准核酸检测,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 1708

javascript json_从零开始学JSON(修订版)

什么是JSONJSON:JavaScript Object Notation 【JavaScript 对象表示法】JSON 是存储和交换文本信息的语法。类似 XML。JSON采用完全独立于任何程序语言的文本格式,使JSON成为理想的数据交换语言S为什么需要JSON提到JSON,我们就应该和XML来进行对比。XML也是一种存储和交换文本信息的手段。那么JSON好在哪里呢??JSON 比 XML 更小...

weixin_39735247的博客 134

Flutter:如何在Android中实现串口通信调试

本文介绍如何通过flutter_libserialport插件在Flutter中实现串口通信调试。

sg_knight的专栏 6098

将xml转成json_从零开始学JSON(修订版)

前言只有光头才能变强。文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y什么是JSONJSON:JavaScript Object Notation 【JavaScript 对象表示法】JSON 是存储和交换文本信息的语法。类似 XML。JSON采用完全独立于任何程序语言的文本格式,使JSON成为理想的数据交换语言S为...

weixin_42356162的博客 159

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

json解析数组 nlohmann_从零开始学JSON(修订版)

什么是JSONJSON:JavaScript Object Notation 【JavaScript 对象表示法】JSON 是存储和交换文本信息的语法。类似 XML。JSON采用完全独立于任何程序语言的文本格式,使JSON成为理想的数据交换语言S为什么需要JSON提到JSON,我们就应该和XML来进行对比。XML也是一种存储和交换文本信息的手段。那么JSON好在哪里呢??JSON 比 XML 更小...

weixin_39691968的博客 373

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

管理WordPress修订版的神器 —— wp-revisions-cli

管理WordPress修订版的神器 —— wp-revisions-cli 在WordPress生态中,管理文章修订版本一直是一个令人头疼的问题。过多的修订版不仅会占用宝贵的数据库空间,还可能影响网站的性能。为了解决这一痛点,我们发现了一款高效且易用的命令行工具——wp-revisions-cli。本文将带你深入了解这个开源项目,展示其强大的功能,并探讨它如何成为开发者和站长的最佳助手。 项目介绍...

gitblog_00041的博客 561

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

javascript语言精粹 微盘_JavaScript语言精粹(修订版)pdf

摘要“学习、理解、实践大师的思想,我们才有可能站在巨人的肩上,才有机会赶超大师,这本书就是开始。”“这是一本介绍JavaScript语言本质的重要书籍,值得任何正在或者想从事JavaScript开发的人阅读,并且非常需要反复阅读。”“如果说犀牛展现了 JavaScript 特性的丰富和功能的强大,蝴蝶(书)则完美诠释了 JavaScript 语言轻巧简洁的特点。”“它是一本很好的帮助你提高 Jav...

weixin_39957265的博客 658

package.json 中版本号详解

一、版本号简介 软件版本号有四部分组成: 第一部分为主版本号,变化了表示有了一个不兼容上个版本的大更改。 第二部分为次版本号,变化了表示增加了新功能,并且可以向后兼容。 第三部分为修订版本号,变化了表示有bug修复,并且可以向后兼容。 第四部分为日期版本号加希腊字母版本号,希腊字母版本号共有...

chonglvpu2883的博客 655

《JavaScript语言精粹 修订版》 读书笔记

之前看到这篇文章,前端网老姚浅谈:怎么学JavaScript?,说到怎么学习JavaScript,那就是看书、分析源码。10本书读2遍的好处,应该大于一本书读20遍。看书主动学习,看视频是被动学习。看书和分析源码的时机。但已经工作一年半载时,正是提高的好时候,此时可以去看书了。全面系统的梳理知识点,扫清自己的盲区。如果只是靠项目经验是不够...

weixin_34236869的博客 284

javascript语言精粹修订版变化_《JavaScript语言精粹 修订版》 读书笔记

你好,我是若川,微信搜索「若川视野」关注我,一起交流学习。之前看到这篇文章,前端网老姚浅谈:怎么学JavaScript?,说到怎么学习JavaScript,那就是看书、分析源码。10本书读2遍的好处,应该大于一本书读20遍。看书主动学习,看视频是被动学习。看书和分析源码的时机。但已经工作一年半载时,正是提高的好时候,此时可以去看书了。全面系统的梳理知识点,扫清自己的盲区。如果只是靠项目经验是不够的...

weixin_42549037的博客 363

JavaScript语言精粹(修订版)

JavaScript语言精粹(修订版) (美)克罗克福德(Crockford,D.)著 赵泽欣,鄢学鹍译 ISBN978-7-121-17740-8 2012 年8 月出版 定价:49.00 元 16开 172页 宣传语 深入挖掘JavaScript精华 内 容 简 介 JavaScript 曾是“世界上最被误解的语言”,因为它担负太多的特性,包括糟糕的交互和失败的设...

云计算? 360

XML和JSO的面试题(修订版)

前言只有光头才能变强。文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3yXML+JSON常见面试题什...

3y 496

(修订版)AJAX入门!

前言只有光头才能变强。文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y一、什么是AjaxAjax(...

3y 504
上一篇: 从零开始学XML(修订版)
下一篇: XML和JSO的面试题(修订版)
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值