我有一些属性的类,例如:
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中这样做吗?我尝试使用JSONObject
和Gson
,但没有为我工作。
答案 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();
现在输出正确。
非常感谢所有试图帮助我解决这个问题的人......