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

How to convert Map of class<T> objects to json java

我有 class 一些属性,例如:

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

我想将此 class 的地图转换为 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 但对我不起作用。

使用 Gson:

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

你必须修复,括号问题。

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"}}

您可以使用 Gson class 的 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 + "]";
    }

}

i 会将上面的 class' 对象转换为 json , getter 和 setter 方法在您将 json 转换回java 对象 .

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"]}

为每个 class 实现一些自定义 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));
    }
}

我找到了方法:

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();

现在输出正确了。

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