如何将class <t>对象的Map转换为json java

时间:2015-05-04 13:09:14

标签: java json gson

我有一些属性的类,例如:

public class MyClass {
    public int number;
    public String s;
}

我希望将此类的Map转换为json。例如:

Map<String, MyClass> map = new HashMap();
map.put("sss", new MyClass(1, "blabla");

json j = new json(map);

我希望输出如下:

{"sss":{"number":"1","s":"blabla"}}

有人知道如何在JAVA中这样做吗?我尝试使用JSONObjectGson,但没有为我工作。

5 个答案:

答案 0 :(得分:1)

你可以使用Gson类的toJson()方法将java对象转换为json,参见下面的例子,

public class SomeObject {

    private int data1 = 100;
    private String data2 = "hello";
    private List<String> list = new ArrayList<String>() {
      {
        add("String 1");
        add("String 2");
        add("String 3");
      }
    };

    //getter and setter methods

    @Override
    public String toString() {
       return "SomeObject [data1=" + data1 + ", data2=" + data2 + ", list="
        + list + "]";
    }

}

我将转换上述课程&#39;当你将json转换回java对象时,json,getter和setter方法的对象很有用。

public static void main(String[] args) {

        SomeObject obj = new SomeObject();
        Gson gson = new Gson();

        // convert java object to JSON format,
        // and returned as JSON formatted string
        String json = gson.toJson(obj);
        System.out.println(json);

        }

输出:

{"data1":100,"data2":"hello","list":["String 1","String 2","String 3"]}

答案 1 :(得分:0)

使用Gson:

Gson gson = new GsonBuilder().create();
String json = gson.toJson(map);

答案 2 :(得分:0)

你必须解决,括号问题。

map.put("sss", new MyClass(1,"test")); //observe 2 braces at the end!

以下代码可以帮到你,

Gson gson = new Gson();
String myJson = gson.toJson(map);

<强>输出:

{"sss":{"number":1,"s":"test"}}

答案 3 :(得分:0)

为每个类实现一些自定义toJSON()方法,如下所示:

public class MyClass1 {
    String number;
    String name;

    public MyClass1(String number, String name){
        this.number = number;
        this.name = name;
    }

    public JSONObject toJSON() throws JSONException {
        return new JSONObject("{\"number\" : \""+this.number+"\", \"name\":\""+this.name+"\"}");
    }

}

然后使用它将map转换为jsonObject

public class MapToJSON {
    public static void main(String[] args) throws JSONException {
        Map<String, JSONObject> map = new HashMap<String, JSONObject>();
        map.put("sss", new MyClass1("1", "Hello").toJSON());

        System.out.println(new JSONObject(map));
    }
}

答案 4 :(得分:0)

我找到了如何做到的方法:

import com.google.gson.Gson;
import org.json.JSONObject;

Gson gson = new Gson();

map.put("sss", new JSONObject(gson.toJson(new MyClass(1, "Hello"))));
map.put("aaa", new JSONObject(gson.toJson(new MyClass(2, "blabla"))));

String output = new JSONObject(map).toString();

现在输出正确。

非常感谢所有试图帮助我解决这个问题的人......