首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >库将json编码/解码为java.util.Map?

库将json编码/解码为java.util.Map?
EN

Stack Overflow用户
提问于 2010-03-23 07:28:23
回答 6查看 39K关注 0票数 15

有没有人知道一个java库可以很容易地将java Maps编码成json对象,反之亦然?

更新

由于无法解释(有时我讨厌)的原因,我不能在我的环境中使用泛型。

我想要做的是拥有这样的东西:

代码语言:javascript
复制
Map a = new HashMap();
a.put( "name", "Oscar" );

Map b = new HashMap();
b.put( "name", "MyBoss"); 
a.put( "boss",  b ) ;


List list = new ArrayList();
list.add( a );
list.add( b );


 String json = toJson( list );
 // and create the json:
 /*
    [
       {
         "name":"Oscar",
         "boss":{
              "name":"MyBoss"
         }
        },
        {
            "name":"MyBoss"
        }
     ]

  */ 

并且能够以地图列表的形式再次拥有它

代码语言:javascript
复制
 List aList = ( List ) fromJson( jsonStirng );
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-03-23 07:34:19

JSON-Simple看起来相对容易使用(下面的例子)。

映射到JSON:

代码语言:javascript
复制
  Map map = new HashMap();
  map.put("name", "foo");
  map.put("nickname", "bar");
  String jsonText = JSONValue.toJSONString(map);

JSON to List/Map:

代码语言:javascript
复制
  String s = yourJsonString;
  List list = (JSONArray) JSONValue.parse(s);       
  Map map = (JSONObject) list.get(0);
票数 14
EN

Stack Overflow用户

发布于 2010-03-23 07:37:11

为此,您可以使用Google Gson。它对Generic types有很好的支持。

这是一个SSCCE

代码语言:javascript
复制
package com.stackoverflow.q2496494;

import java.util.LinkedHashMap;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class Test {

   public static void main(String... args) {
        Map<String, String> map = new LinkedHashMap<String, String>();
        map.put("key1", "value1");
        map.put("key2", "value2");
        map.put("key3", "value3");
        Gson gson = new Gson();

        // Serialize.
        String json = gson.toJson(map);
        System.out.println(json); // {"key1":"value1","key2":"value2","key3":"value3"}

        // Deserialize.
        Map<String, String> map2 = gson.fromJson(json, new TypeToken<Map<String, String>>() {}.getType());
        System.out.println(map2); // {key1=value1, key2=value2, key3=value3}
    }

}
票数 33
EN

Stack Overflow用户

发布于 2010-03-23 07:38:01

您可以从Json.org查看该站点,以获取用Java语言编写的优秀JSON库的列表。

own自己的implementation JSONObject就可以做到这一点。从他们的JavaDoC

代码语言:javascript
复制
 /**
     * Construct a JSONObject from a Map.
     * 
     * @param map A map object that can be used to initialize the contents of
     *  the JSONObject.
     */
    public JSONObject(Map map);

你可以做到

代码语言:javascript
复制
JSONObject json = new JSONObject(map);

要将JSON字符串转换回object...

代码语言:javascript
复制
String jsonString = "{\"name\" : \"some name\", \"age\" : 10}";
JSONObject json = new JSONObject(jsonString);

您可以访问如下值:

代码语言:javascript
复制
int age = json.getInt("age");

构造函数JavaDoC

从源JSON文本字符串构造JSONObject。这是最常用的JSONObject构造函数。

参数: source以{开头的字符串(左括号),以}结尾的字符串(右括号)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2496494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档