Mysql5.7版本以后提供一个原生的Json类型,Json值将不再以字符串的形式存储,而是采用一种允许快速读取文本元素(document elements)的内部二进制(internal binary)格式。
注:代码以String类型声明
SELECT t.`properties` ->> '$.cpu' FROM `t_jsondemo` t WHERE t.`properties` ->> '$.type'='ACTIVE1'
SELECT * FROM `t_jsondemo` t WHERE JSON_EXTRACT(t.`properties`, '$[1]')='ACTIVE2'
或
SELECT * FROM `t_jsondemo` t WHERE JSON_EXTRACT(t.`properties`, '$[1].cpu') = 4
JSONobject是FastJson提供的对象,在API中是用一个私有的常量map进行封装的,实际就是一个map,只不过 FastJson对其进行了封装,添加了很多方便快捷的属性方法。
2.1、java对象转化成String
2.2、String类型转json对象,取JSON中的KEY
2.3、String对象转化为List类型
2.4、String对象转化为Map类型
public class JSONObjectDemo {
public static void main(String\[\] args) {
//创建对象
List<JsonObjectVO> list = new ArrayList<>();
//对象1
JsonObjectVO vo1 = new JsonObjectVO();
vo1.setUuid(UUID.randomUUID().toString());
vo1.setName("1");
//对象2
JsonObjectVO vo2 = new JsonObjectVO();
vo2.setUuid(UUID.randomUUID().toString());
vo2.setName("2");
list.add(vo1);
list.add(vo2);
ResponseVO responseVO = ResponseVO.builder()
.uuid(UUID.randomUUID().toString())
.list(list)
.build();
/\*\*
\* 1、java对象转化成String
\* toPrint:{"list":\[{"name":"1","uuid":"b73bb9e8-f7a3-4dcf-8d8d-51313c7f5fd7"},{"name":"2","uuid":"ef109d35-cd07-45cd-9b45-791b205c878f"}\],"uuid":"dbc3b9c6-2360-4b83-9d15-b88fe7980f27"}
\* \*/
String str = **JSONObject.toJSONString(responseVO)**;
/\*\*
\* 2、String类型转json对象,取JSON中的KEY
\* toPrint:\[{"name":"1","uuid":"b73bb9e8-f7a3-4dcf-8d8d-51313c7f5fd7"},{"name":"2","uuid":"ef109d35-cd07-45cd-9b45-791b205c878f"}\]
\* \*/
Object data = **JSONObject.parseObject(str).get("list"****)**;
/\*\*
\* 3、将String对象转化为List类型
\* toPrint:\[JsonObjectVO(uuid=aebd390d-f543-4410-9c3a-98f2cb057757, name=1), JsonObjectVO(uuid=d170bb12-7570-47dd-8f2d-9ec2df5573c5, name=2)\]
\* \*/
List<JsonObjectVO> aList = **JSONObject.parseArray(JSONObject.toJSONString(data),JsonObjectVO.class****)**;
/\*\*
\* 4、将String对象转化为Map类型
\* \*/
Map map = **JSONObject.parseObject(JSONObject.toJSONString(vo1), Map.class****)**;
System.out.println(str);
System.out.println(data);
System.out.println(aList);
System.out.println(map.get("name"));
}
}
注:JSON字段在insert语句中采用String格式
手机扫一扫
移动阅读更方便
你可能感兴趣的文章