1、Java的json得到我们想要的数据结构

news2024/11/16 12:04:30

Java的json得到我们想要的数据结构

第一步:首先我们要知道json就两种数据结构。

!!!第一种数据结构:对象用{ }表示

!!!第二种数据结构:数组用[ ]表示

 

  1. 我们用这个案例来分析一下。首先最外面是一个{ }所以一个对象。

 

所以我们先new Bar对象。

 

  1. 跟着是一个上面对象的属性的数组了用[ ]表示

 

所以我们后面用的Arraylist<String>来表示。然后用add加数据。然后将其中的数据set进前面的对象。(这里好好看看别人写法)

 

  1. 后面就是一个对象的属性的对象数组了(这里的数组里只有一个对象而已)所以里面是数组对象

 

所以我们后面就是一个数组对象。(数组里面是对象)也就是ArrayList<Servies>

 

  1. 我们就去给这个里面的对象的各个属性赋值了(name很简单,直接先new出Servies)

然后set就ok了(都是在前面的对象数组里执行)

 

  1. 我们里面还有个对象的属性里一个Interger的数组。所以就是一个new ArrayList<Integer>。然后再给这个数组add加数据

 

  1. 不要忘记我们这个将这个对象数组的对象用add加进去。也就是add s。(上面也是个数组嘛,只不过他是一个对象数组)

 

  1. 我们再将我们这个数组属性通过bar.setSeries(series);给属性赋值。

 

  1. 最后我们返回这个对象(我们最开始为一个对象嘛)

 

测试:

 

 

!!!总结:

  1. 其中我们这里面我们给对象的属性赋值最后是用的set属性这种。(上面我们有给对象数组属性,我们放进去数组。(两个大属性都是数组,只是一个是普通数组,一个是对象数组))
  2. 其中我们给数组加数据用的是add。(印象深刻吧,其中我们给下面的一个对象数组赋值是add(对象s))
  3. 我们数据结构最开始为什么结构,那么我们这个方法就要定义为什么结构(两种结构,要么数组[ ](可以是普通数组,也可以是对象数组),或者对象{ })
  4. 举一反三:我们看下这个json数据结构(饼图的)

 

这里我直接说逻辑我们怎么写:

首先我们发现其中最外面是一个[ ]是一个数组。而且是一个对象数组所以我们方法就要定义为ArrayList<Pie>, 我们再new一个ArrayList<Pie>这个就是最外层的数组(数组里面是对象(叫对象数组))。然后我们就是去new不同的Pie对象。然后分别对象的赋值方式(set属性)。最后就是给这个数组的属性对象赋值到数组了。(add)(这其中我们有两赋值操作1、里面的对象赋值set,2、外面的数组赋值add(不同的对象))最后返回这个对象数组list

 

package com.example.demo5.controller;



import com.example.demo5.pojo.Bar;

import com.example.demo5.pojo.Series;

import org.springframework.web.bind.annotation.*;



import java.util.*;



/**

 * 对象的属性里面嵌套数组,还有数组里面([]为数组,{}为对象)

 */

@RestController

@RequestMapping("/bar")

public class BarController {



    @GetMapping

    public Bar bar() {

        Bar bar=new Bar();

        ArrayList<String> strings = new ArrayList<String>(){{

            add("苹果");

        }};

        bar.setCategories(strings);



        ArrayList<Series> series = new ArrayList<Series>(){{

            Series s = new Series();

            s.setName("手机品牌");

            s.setData(new ArrayList<Integer>() {

                {

                    add(1);

                    add(2);

                    add(3);

                }

            });

            add(s);

        }};

        bar.setSeries(series);

        return bar;

    }

}

package com.example.demo5.pojo;



import lombok.Data;



import java.util.List;

import java.util.Map;



@Data

public class Bar {

    private List<String> categories;

    private List<Series> series;

}



package com.example.demo5.pojo;



import lombok.Data;



import java.util.List;



@Data

public class Series {

   private String name;

   private List<Integer> data;

}



package com.example.demo5.controller;



import com.example.demo5.piepojo.Pie;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;



import java.util.ArrayList;



/**

 * 对象数组(本质是个数组(最外面是[]数组))(也就是多个对象)其中[]为数组。{}为对象

 */

@RestController

@RequestMapping("/pie")

public class PieController {

    @GetMapping

    public ArrayList<Pie> pie(){

        ArrayList<Pie> list=new ArrayList<>();

        Pie pie = new Pie();



        pie.setName("苹果");

        pie.setValue(108370);

        pie.setUrl("http://www.baidu.com");



        Pie pie2 = new Pie();

        pie2.setName("华为");

        pie2.setValue(2934456);

        pie2.setUrl("http://www.baidu.com");



        list.add(pie);

        list.add(pie2);



        return list;

    }





}



package com.example.demo5.piepojo;



import lombok.Data;



@Data

public class Pie {

    private String name;

    private Integer value;

    private String url;

}

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

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

相关文章

在智能家居领域产品中常用芯片

芯片是当前“电子科技设备的灵魂”所在&#xff0c;几乎决定了所有电子设备的综合性能&#xff0c;现如今智能家居带来了全新的使用场景与交互方式&#xff0c;从扫地机器人、智能洗碗机、智能冰箱等智能机器&#xff0c;到智能照明、智能感知、网络通讯、家庭影音等智能系统&a…

H264基础知识入门

之前视频基础&#xff0c;有讲到视频的原始数据YUV&#xff0c;相比RBG&#xff0c;数据确实减少了&#xff0c;但还是一个非常大数据量&#xff0c;会占用很大空间以及在给网络传输带来很大压力。所以必须要对视频进行压缩&#xff0c;减少占用空间。这里主要分享H264编码技术…

数字IC设计之——低功耗设计

目录 概述 背景 为什么需要低功耗设计 CMOS IC功耗分析 基本概念 功耗的分类 功耗相关构成 不同层次低功耗设计方法 芯片中的功耗分布以及对应的低功耗方案 低功耗方案 系统算法级的低功耗技术 编码阶段的低功耗技术 门控时钟 Clock Gating 物理实施的低功耗技术 操作数分离&am…

【第六部分 | JavaScript高级】1:面向对象

目录 【第一章】面向对象 | Class创建、构造函数、方法 | Class继承 | 三个注意点 | 静态成员 | 原型对象 __ _proto___ | 类的本质 【第一章】面向对象 | Class创建、构造函数、方法 创建类 class name {// class body }var xx new name() 构造函数 class Person {co…

【Godot】数据响应的方式执行功能

Godot Engine 版本&#xff1a;4.0 beta 6 下载地址&#xff1a;Index of /godotengine/4.0/beta6/ (downloads.tuxfamily.org) 在这个教程中&#xff0c;学会理解以数据为主的进行处理执行逻辑的代码编写方式&#xff0c;虽然看似简单&#xff0c;但是确是方便又好用。 以及下…

Git使用教程

Git项目的三个工作区域的概念&#xff1a; 1、Git仓库Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分&#xff0c;从其它计算机克隆仓库时&#xff0c;拷贝的就是这里的数据。 2、工作目录工作目录是对项目的某个版本独立提取出来的内容…

Ansible之 AWX 创建管理项目的一些笔记

写在前面 分享一些 AWX 创建管理项目的笔记博文内容涉及&#xff1a; 容器化 AWX 手工创建项目Demo通过 SCM 创建项目 Demo项目角色&#xff0c;更新策略介绍&#xff0c;SCM 凭据的创建 食用方式&#xff1a; 需要了解 Ansible理解不足小伙伴帮忙指正 傍晚时分&#xff0c;你坐…

ssm项目改造spring boot项目

快速创建 Spring Boot 项目 添加依赖 如果是普通 Maven 项目&#xff0c;需要手动添加。 <!-- 打包方式 jar 包 --> <packaging>jar</packaging><!-- 指定父工程 --> <parent><groupId>org.springframework.boot</groupId><ar…

操作系统学习笔记(Ⅰ):概述

目录 1 操作系统概念 1.1 定义 1.2 功能 1.系统资源的管理者 2.用户和计算机硬件间接口 3.最接近硬件的层次 2 操作系统的特征 2.1 并发 2.2 共享 2.3 虚拟 2.4 异步 3 发展和分类 3.1 手工操作阶段 3.2 批处理阶段 1.单道批处理阶段 2.多道批处理系统 3.3 分…

启明欣欣STM32开发板闪烁LED实验

最近在咸鱼上买了一块启明欣欣的STM32板子&#xff0c;准备在上面测试open62541和CANopen&#xff0c;到货后如下图&#xff0c; 找商家要了资料&#xff0c;然后运行一个LED灯的实验来简单测试下板子&#xff0c;本文记录一下这个过程。 一 准备 安装Keil 5.35&#xff0c;安…

【selection】 学习光标API并实现编辑区插入表情图片的功能

目录场景介绍selection介绍selection APIrange 介绍range API实现编辑区插入表情图片参考资料场景介绍 在写web版聊天器时&#xff0c;遇到一个需求&#xff1a; 聊天时用户可以在编辑区加入表情图片&#xff0c;并且表情图片要插入在光标位置。// *web版聊天器地址&#xff…

useMemo 使用误区

文章の目录问题背景useMemo 使用前后组件性能对比结论问题背景 在某一个h5项目中&#xff0c;使用了 useMemo 对项目中的组件进行优化&#xff0c;减少组件不必要的re-render, 优化后的结果&#xff1a; 在组件的props和状态未改变时&#xff0c;组件不再进行 re-render 表面上…

生意不好如何逆风翻盘 | 多门店经营必读技巧(1):导购管理 连锁店管理的技巧 连锁店生意经 如何做导购管理

很多连锁店老板反馈&#xff0c;为了优化门店的销售业绩&#xff0c;什么方法都试过了&#xff0c;改店铺陈列、搞优惠活动、做会员管理.......为什么分店的业绩还是看不到明显的提升&#xff1f; 方法试过了&#xff0c;结果没变化&#xff0c;那只能是执行这块出了问题&#…

量子计算(八):观测量和计算基下的测量

文章目录 观测量和计算基下的测量 一、观测量 二、计算基下的测量 三、投影测量 观测量和计算基下的测量 一、观测量 量子比特&#xff08;qubit&#xff09;不同于经典的比特&#xff08;bit&#xff09;&#xff0c;一个量子比特|>可以同时处于|0>和|1>两个状态…

Linux从入门到精通(八)——Linux磁盘管理

文章篇幅较长&#xff0c;建议先收藏&#xff0c;防止迷路 文章跳转Linux从入门到精通&#xff08;八&#xff09;——Linux磁盘管理goLinux从入门到精通&#xff08;九&#xff09;——Linux编程goLinux从入门到精通&#xff08;十&#xff09;——进程管理goLinux从入门到精…

C++ 结合mysql写一个服务端

1 libhv和mysql libhv是一个跨平台的C网络库。 mysql是一个关系型数据库。 2 下载MySQL&#xff0c; 最好不要下载高版本的&#xff0c;容易出错&#xff01;&#xff01;&#xff01; 下载地址MySQL 下载好后目录是这样的&#xff1a; 然后在环境变量里配置&#xff1a;…

Hive 3.1.3

1.下载安装包 Index of /hive/hive-3.1.3https://dlcdn.apache.org/hive/hive-3.1.3/ 2.安装&修改配置文件 2.1 安装MySQL a. 搜索centos7默认的mariadb & 卸载 [root@node1 ~]# rpm -qa | grep mariadb mariadb-libs-5.5.44-2.el7.centos.x86_64 卸载 [r…

【计算机组成原理Note】5.4.2 控制器-微程序

5.4.2 控制器-微程序 硬布线工作原理&#xff1a;微操作控制信号由组合逻辑电路根据当前的指令码、状态和时序&#xff0c;即时产生微程序工作原理&#xff1a;事先把微操作控制信号存储在一个专门的存储器(控制存储器)中&#xff0c;将每一条机器指令编写成一个微程序&#xf…

差钱吗?周杰伦线上演唱会没关打赏惹争议,看看同时直播的腾格尔

随着世界杯的到来&#xff0c;全球都进入了世界杯时间&#xff0c;音乐领域的明星们&#xff0c;都以各种形式欢迎世界杯的到来。在世界杯开幕的前一晚上&#xff0c;著名音乐人周杰伦&#xff0c;在某手平台开启了线上演唱会&#xff0c;吸引了众多人前来围观。 据不完全统计&…

【正点原子FPGA连载】 第七章 Verilog HDL语法 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第七章 Verilog …