Java的json得到我们想要的数据结构
第一步:首先我们要知道json就两种数据结构。
!!!第一种数据结构:对象用{ }表示
!!!第二种数据结构:数组用[ ]表示
- 我们用这个案例来分析一下。首先最外面是一个{ }所以一个对象。
所以我们先new Bar对象。
- 跟着是一个上面对象的属性的数组了用[ ]表示
所以我们后面用的Arraylist<String>来表示。然后用add加数据。然后将其中的数据set进前面的对象。(这里好好看看别人写法)
- 后面就是一个对象的属性的对象数组了(这里的数组里只有一个对象而已)所以里面是数组对象
所以我们后面就是一个数组对象。(数组里面是对象)也就是ArrayList<Servies>
- 我们就去给这个里面的对象的各个属性赋值了(name很简单,直接先new出Servies)
然后set就ok了(都是在前面的对象数组里执行)
- 我们里面还有个对象的属性里一个Interger的数组。所以就是一个new ArrayList<Integer>。然后再给这个数组add加数据
- 不要忘记我们这个将这个对象数组的对象用add加进去。也就是add s。(上面也是个数组嘛,只不过他是一个对象数组)
- 我们再将我们这个数组属性通过bar.setSeries(series);给属性赋值。
- 最后我们返回这个对象(我们最开始为一个对象嘛)
测试:
!!!总结:
- 其中我们这里面我们给对象的属性赋值最后是用的set属性这种。(上面我们有给对象数组属性,我们放进去数组。(两个大属性都是数组,只是一个是普通数组,一个是对象数组))
- 其中我们给数组加数据用的是add。(印象深刻吧,其中我们给下面的一个对象数组赋值是add(对象s))
- 我们数据结构最开始为什么结构,那么我们这个方法就要定义为什么结构(两种结构,要么数组[ ](可以是普通数组,也可以是对象数组),或者对象{ })
- 举一反三:我们看下这个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;
}