登峰造极境

  • WIN
    • CSharp
    • JAVA
    • OAM
    • DirectX
    • Emgucv
  • UNIX
    • FFmpeg
    • QT
    • Python
    • Opencv
    • Openwrt
    • Twisted
    • Design Patterns
    • Mysql
    • Mycat
    • MariaDB
    • Make
    • OAM
    • Supervisor
    • Nginx
    • KVM
    • Docker
    • OpenStack
  • WEB
    • ASP
    • Node.js
    • PHP
    • Directadmin
    • Openssl
    • Regex
  • APP
    • Android
  • AI
    • Algorithm
    • Deep Learning
    • Machine Learning
  • IOT
    • Device
    • MSP430
  • DIY
    • Algorithm
    • Design Patterns
    • MATH
    • X98 AIR 3G
    • Tucao
    • fun
  • LIFE
    • 美食
    • 关于我
  • LINKS
  • ME
Claves
长风破浪会有时,直挂云帆济沧海
  1. 首页
  2. Platforms
  3. WINDOWS
  4. JAVA
  5. 正文

java JSON转换为Array或HashMap-日常笔记

2017-08-30

一、需求

由于需要将json存储在influxdb中,为了解析各个key/value所以需要变换成HashMap.

二、所用依赖

Maven:

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.0</version>
</dependency>

三、代码

		/**
		 * JSON 转成key,value映射表
		 * @param jsonNode
		 * @param map
		 */
		public static void Json2Map(JsonNode jsonNode, Map<String, String>  map)
		{
			
			Iterator<Entry<String, JsonNode>>  fields = jsonNode.fields();
			
			while(fields.hasNext())
			{
				Entry<String, JsonNode> entry = fields.next();
				
				String key = entry.getKey();
				JsonNode value = entry.getValue();
				// 如果子节点可以迭代,则继续迭代
				if(value.isContainerNode())
				{
					Json2Map(value,map);
				}else{
					map.put(key, value.asText());
				}

			}
		}

使用代码:

JsonNode jsonNode = new ObjectMapper().readTree(msgBody); //msgBody为String json
Map<String, String> map = new HashMap<String, String>();
Json2Map(jsonNode,map);
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
// 迭代添加到influxdb point builder中
while(it.hasNext())
{
	Map.Entry<String, String> entry = it.next();
	pointBuilder.addField(entry.getKey(), entry.getValue());//业务代码
}

例如JSON:

{
    "a": {
        "a1": "43.23",
        "a2": 32.32,
        "a3": 35,
        "a4": {
            "a4-1": 3235
        }
    },
    "b": {
        "b1": 432,
        "b2": "543.23"
    },
    "c1": 443232,
    "d1": "432432.432"
}

迭代后输出:

格式:key=value

a1=43.23
a2=32.32
a3=35
a4-1=3235
b1=432
b2=543.23
c1=443232
d1=432432.432

标签: 暂无
最后更新:2017-08-30

代号山岳

知之为知之 不知为不知

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2099 登峰造极境. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备14031139号-5

川公网安备51012202000587号