Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >GSON 多层Map剥离

GSON 多层Map剥离

作者头像
netkiller old
发布于 2018-03-05 08:04:27
发布于 2018-03-05 08:04:27
1.8K00
代码可运行
举报
文章被收录于专栏:NetkillerNetkiller
运行总次数:0
代码可运行

工作中遇到一个问题,我们提供给外包方的 json 无法Decode 。

一段简单 JSON 字符串,字符串如下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
String json= "{\"0\":{\"id\":\"2\",\"category_id\":\"1\",\"title\":\"Test2\",\"author\":\"\",\"ctime\":\"2016-03-05 11:59:56\"},\"1\":{\"id\":\"1\",\"category_id\":\"1\",\"title\":\"Test1\",\"author\":\"\u6d4b\u8bd5\",\"ctime\":\"2016-03-05 11:57:30\"},\"pages\":{\"count\":2,\"first\":0,\"last\":0,\"before\":0,\"current\":0,\"next\":0,\"total\":0}}";

对方话费了大量时间解决不了问题。后来说请了 “新浪” 高手过来(让我想到周星驰电影,他们请来大内高手高手高高手)。看后也无能为力,说我们JSON 字符串不符合JSON标准规范。

我无语!啥也不说了,帮你们写一个例子吧。

12.2. com.google.gson

https://github.com/google/gson

首先看看怎么剥离一层Map

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
		<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>sender</groupId>
	<artifactId>sender</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>Sender</name>
	<description>EDM</description>

	<dependencies>
		<dependency>
			<groupId>com.rabbitmq</groupId>
			<artifactId>amqp-client</artifactId>
			<version>3.6.0</version>
		</dependency>
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.6.2</version>
			<scope>compile</scope>
		</dependency>
	</dependencies>

</project>		
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
		package io.github.netkiller;

import java.util.HashMap;
import java.util.Map;

import com.google.gson.*;

public class GsonTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Gson gson = new Gson();
		String json = "{\"k1\":\"v1\",\"k2\":\"v2\"}";
		Map<String, String> map = new HashMap<String, String>();
		map = (Map<String, String>) gson.fromJson(json, map.getClass());
		System.out.println(map.get("k1"));
	}

}		

12.2.1. 多层 Map 剥离

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
		Gson gson = new Gson();
		String json= "{\"0\":{\"id\":\"2\",\"category_id\":\"1\",\"title\":\"Test2\",\"author\":\"\",\"ctime\":\"2016-03-05 11:59:56\"},\"1\":{\"id\":\"1\",\"category_id\":\"1\",\"title\":\"Test1\",\"author\":\"\u6d4b\u8bd5\",\"ctime\":\"2016-03-05 11:57:30\"},\"pages\":{\"count\":2,\"first\":0,\"last\":0,\"before\":0,\"current\":0,\"next\":0,\"total\":0}}";
		Map<String, Map> map = new HashMap<String, Map>();
		
		map = (Map<String, Map>) gson.fromJson(json, map.getClass());
		System.out.println(map.get("1").get("title"));
		System.out.println(map.get("pages").get("count"));			

以上例子节选自 《Netkiller Java 手札》

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Netkiller 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于Calcite的分布式多数据源查询
在本文中,我们将实践 GBase8s 和 MySQL 的跨数据源联合查询,案例中 MySQL 数据源中存放商品信息,GBase8s 数据源中存放订单信息。整体架构如下
麒思妙想
2022/02/25
2.5K0
基于Calcite的分布式多数据源查询
开发一个属于自己的Spring Boot Starter
通过以上的描述,我们可以简单地将starter看作是对一个组件功能粒度较大的模块化封装,包括了所需依赖包的整合及基础配置和自动装配等。
端碗吹水
2020/09/23
4.9K0
开发一个属于自己的Spring Boot Starter
Apache Griffin+Flink+Kafka实现流式数据质量监控实战
本文用的组件包括以下几个,是参考了官方案例,版本可以参考github以及里面的pom文件。本文假定以下环境均已安装好。
王知无-import_bigdata
2022/04/13
1.4K0
基于SpringBoot、Elasticsearch实现酒店查询功能!
在一些应用中,Elasticsearch应用于全文搜索的很少,多是用于ToC端的查询,更像是一个缓存数据库。
Java程序猿
2021/02/19
9810
Gson基本使用
Gson是谷歌官方推出的支持 JSON -- Java Object 相互转换的 Java序列化/反序列化 库,之前由于没有用过,所以学习一下。
阿超
2022/08/16
5900
Gson基本使用
Spring boot with Email
本文节选自《Netkiller Java 手札》 地址: http://www.netkiller.cn/java/ 9.12. Spring boot with Email 9.12.1. Maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> 例 9.2. Spring boot wit
netkiller old
2018/03/05
1.4K0
​idea如何新建一个多模块的springCloud项目
javaNice
2023/11/22
5971
Phalcon VS Spring 用法对照手册
Phalcon VS Spring 摘要 Phalcon VS Spring 用法对照表 ---- 目录 1. Install 1.1. Phalcon 1.2. Spring 2. Project initialization 2.1. Phalcon 2.2. Spring 3. Controller 3.4.1. Phalcon 3.4.2. Spring 3.3.1. Phalcon 3.3.2. Spring 3.2.1. Phalcon 3.2.2. Spring 3.1.1. Phalcon
netkiller old
2018/03/05
1.1K0
gson工具类转换json
引入maven <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> </dependency> List集合 和json字符串的互转 @Test public void te
崔笑颜
2020/06/08
1.4K0
Spring boot with Elasticsearch 5.5.1
Spring boot with Elasticsearch 5.5.1 本文节选自《Netkiller Java 手札》 作者:netkiller 网站: http://www.netkiller.cn 5.27. Spring boot with Elasticsearch 5.5.x Spring data 目前还不支持 Elasticsearch 5.5.x 所以需要通过注入 TransportClient 这就意味着使用 5.5.x 版本你无法使用 ElasticsearchRepository
netkiller old
2018/03/05
1.9K0
string转map_map转bean对象
注意: 如果map中的value是int,那么在转换成json的时候会转换成Double 如果要使用int,需要进行转换:
全栈程序员站长
2022/10/01
2.5K0
Elasticsearch入门系列~通过Java一系列操作Elasticsearch
  上一章节已经在Linux系统上安装Elasticsearch并且可以外网访问,这节主要通过Java代码操作Elasticsearch
sunny1009
2019/09/04
7120
Elasticsearch入门系列~通过Java一系列操作Elasticsearch
Java图书目录管理系统CRUD展示(springboot+vue+mybatis-plus)
这篇文章是针对一个c++的编程题,进行的java的改变,然后在那个基础之上加上了一个网页的前端,主要的参考文章是这两篇,看完之后,就会发现,其实这个,大部分项目都是图书管理系统的简单变化而成的。
GeekLiHua
2025/01/21
1110
Java图书目录管理系统CRUD展示(springboot+vue+mybatis-plus)
Gson:我爸是 Google
我叫 Gson,是一款开源的 Java 库,主要用途为序列化 Java 对象为 JSON 字符串,或反序列化 JSON 字符串成 Java 对象。从我的名字上,就可以看得出一些端倪,我并非籍籍无名,我出身贵族,我爸就是 Google,市值富可敌国。
沉默王二
2020/12/29
9700
Gson:我爸是 Google
Spring boot with Velocity template
本文节选自《Netkiller Java 手札》 地址: http://www.netkiller.cn/java/index.html 9.13. Spring boot with Velocity template 9.13.1. Maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-velocity</artifactId> </dependenc
netkiller old
2018/03/05
2.7K0
Spring Cloud【Finchley】实战-02订单微服务
通常来讲,微服务都是分数据库的。这里我们新建个数据库给订单微服务 ,数据库实例名 o2o-order
小小工匠
2021/08/17
3750
Java爬虫及分布式部署
基于HttpClient爬虫 环境 IDEA 2017.2 JDK 1.8 httpclient 4.5.4 maven 3.5.0 基本步骤 1.在maven中导入httpClient依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.4</version> </de
待你如初见
2018/09/29
1.3K2
JavaWeb中使用JSON
JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。
我没有三颗心脏
2018/05/28
2.1K1
JavaWeb中使用JSON
json与类,集合的转换(一)之gson实现
主要用于存储对象状态为另一种通用格式,比如存储为二进制、xml、json等等,把对象转换成这种格式就叫序列化,而反序列化通常是从这种格式转换回来。
周杰伦本人
2023/10/12
3180
json与类,集合的转换(一)之gson实现
Gson 简单使用姿势小结
关于 Json 序列化的框架可以说比较多了,比如 Spring 默认的 Jackson,国内互联网用的比较多的 FastJson,本文则主要介绍一下 Gson 的简单使用姿势,并不会涉及到不同的 json 框架的性能对比
一灰灰blog
2020/10/26
8030
Gson 简单使用姿势小结
相关推荐
基于Calcite的分布式多数据源查询
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验