Java解析Json字符串--Map

Json字符串示例:

{
    "age": 20,
    "gender": "male",
    "grades": "三班",
    "name": "苏三",
    "weight": 63.5
}

遇到这样的格式的Json字符串,我们可以将其解析成一个bean,同时我们也可以直接将其解析为Map。

解析成Map比较简单,我们直接来看看解析方法。

第一种方法:

package com.test;

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

import net.sf.json.JSONObject;

public class Domain {

    @SuppressWarnings("unchecked")
    public static void main(String[] args) {

        String jsonStr = "{\"weight\":51.3,\"name\":\"露西\",\"age\":26,\"gender\":\"female\",\"grades\":\"三班\"}";

        Map<String, Object> map = new HashMap<String, Object>();

        map = JSONObject.fromObject(jsonStr);

        System.out.println(map.get("weight"));
        System.out.println(map.get("name"));
        System.out.println(map.get("age"));
        System.out.println(map.get("gender"));
        System.out.println(map.get("grades"));
    }
}

说明:

  • 这种方法比较暴力直接,我们直接将得到的JSONObject赋值给map即可,连强制类型转换都不需要。(个人感觉这种方式比较简单方便,但是网上很少有这样实现的,具体原因未知。JDK1.7下测试完全没问题。)

第二种方法:

package com.test;

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

import net.sf.json.JSONObject;

public class Domain {

    @SuppressWarnings("unchecked")
    public static void main(String[] args) {

        String jsonStr = "{\"weight\":51.3,\"name\":\"露西\",\"age\":26,\"gender\":\"female\",\"grades\":\"三班\"}";

        Map<String, Object> map = new HashMap<String, Object>();

        JSONObject jsonObject = JSONObject.fromObject(jsonStr);

        Iterator<String> keys = jsonObject.keys();//定义迭代器

        String key = null;
        Object value = null;

        while(keys.hasNext()){
            key = keys.next();
            value = jsonObject.get(key);

            map.put(key, value);
        }

        System.out.println(map.get("weight"));
        System.out.println(map.get("name"));
        System.out.println(map.get("age"));
        System.out.println(map.get("gender"));
        System.out.println(map.get("grades"));
    }
}

说明:

  • 这种方式比较传统,网上也大都是采用的这种方式。

最后,我们来看看怎么通过Map生成Json字符串

package com.test;

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

import net.sf.json.JSONObject;

public class Domain {

    public static void main(String[] args) {

        Map<String, Object> map = new HashMap<String, Object>();

        map.put("age", 26);
        map.put("gender", "female");
        map.put("grades", "三班");
        map.put("name", "露西");
        map.put("weight", 51.3f);

        String jsonStr = JSONObject.fromObject(map).toString();
        System.out.println(jsonStr);
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏菩提树下的杨过

XmlWriter/XmlReader示例代码

在Silverlight项目中,如果您想最大程度的减少xap包的大小,仅使用默认System.Xml命名空间下提供的功能来实现“XML序列化/反序列化”,恐怕X...

24670
来自专栏算法修养

CodeForces 666B World Tour(spfa+枚举)

B. World Tour time limit per test 5 seconds memory limit per test 512 mega...

34940
来自专栏跟着阿笨一起玩NET

C# string byte[] Base64 常用互相转换

http://www.cnblogs.com/zxx193/p/3605238.html?utm_source=tuicool

26010
来自专栏菩提树下的杨过

objective-C中如何判断一个类中有没有定义某个方法

C#中可以通过反射分析元数据来解决这个问题,示例代码如下: using System; using System.Reflection; namespace ...

20990
来自专栏机器学习算法与Python学习

pyhton-----break语句

Python break语句,就像在C语言中,打破了最小封闭for或while循环。break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完...

30750
来自专栏逸鹏说道

Python3 与 C# 基础语法对比(String专栏-新排版)

在线编程:https://mybinder.org/v2/gh/lotapp/BaseCode/master

15920
来自专栏逸鹏说道

new and override

昨天有个网友问我继承里面的new和override关键词有啥区别,呃,我们来看个例子就知道了 new ==》隐藏父类同名方法 override==》覆盖 定义...

35280
来自专栏GreenLeaves

Linq基础知识小记一

1、LINQ(语言级集成查询)的作用就是提供一种统一且对称的方式,让程序员在广义的数据上获取和操作数据。广义的数据包括XML文档数据、元数据、System.Da...

20180
来自专栏菩提树下的杨过

温故而知新:Delegate,Action,Func,匿名方法,匿名委托,事件

一、委托Delegate 一般的方法(Method)中,我们的参数总是string,int,DateTime...这些基本的数据类型(或者没有参数),比如 p...

19760
来自专栏大内老A

谈谈Nullable<T>的类型转换问题

本篇文章讨论可空值类型(Nullable<T>)的转换,却确地说是如何将一种类型的值对象转换成相应的可空值。这来源于今天我们的一个成员遇到的一个小问题,我经过一...

213100

扫码关注云+社区

领取腾讯云代金券