转换JSON代码的最佳方法是什么:

{ 
    "data" : 
    { 
        "field1" : "value1", 
        "field2" : "value2"
    }
}

在Java Map中,其中一个键是(field1, field2),这些字段的值是(value1, value2)。

什么好主意吗?我应该使用Json-lib吗?或者如果我自己编写解析器会更好?


当前回答

使用谷歌的Gson 2.7(可能是更早的版本,但我测试了2.7),它很简单:

Map map = gson.fromJson(json, Map.class);

它返回类型为com.google.gson.internal.LinkedTreeMap的Map,并对嵌套对象递归地工作。

其他回答

import net.sf.json.JSONObject

JSONObject.fromObject(yourJsonString).toMap

JSON to Map总是字符串/对象数据类型。我有GSON lib从谷歌。 Gson库使用字符串不为复杂的对象,你需要做一些其他的事情

我这样做。这很简单。

import java.util.Map;
import org.json.JSONObject;
import com.google.gson.Gson;

public class Main {
    public static void main(String[] args) {
        JSONObject jsonObj = new JSONObject("{ \"f1\":\"v1\"}");
        @SuppressWarnings("unchecked")
        Map<String, String> map = new Gson().fromJson(jsonObj.toString(),Map.class);
        System.out.println(map);
    }
}

JSON to Map总是字符串/对象数据类型。我有GSON lib从谷歌。

工作得非常好,JDK 1.5是最低要求。

试试这段代码,对我很管用,

Map<String, Object> retMap = new Gson().fromJson(
                myJsonString, new TypeToken<HashMap<String, Object>>() {}.getType()
        );