使用Gson库将Java String对象转换为Json

时间:2015-09-25 07:29:46

标签: java json gson

我能够使用 List , ArrayList 等复杂Java对象转换为 Json > Gson 库如下代码

    List<CusPojo> list=new ArrayList<CusPojo>();
       .
       .
     Gson gson=new Gson();
     String json=gson.toJson(list);

但是,如果对字符串文字字符串Obj 尝试相同,则转换不会发生

    String msg="success";
            **or**
    String msg=new String("success");

    Gson gson=new Gson();
    String json=gson.toJson(msg); 
    System.out.println("json data-- "+json);

这里我希望Json格式的数据像

    json data-- {"msg":"success"}

但是成功就是我得到的

    json data-- "success"

我无法找到关于这个问题的任何解释 请帮忙,提前谢谢..

6 个答案:

答案 0 :(得分:3)

请注意,我很少再写java了,我面前没有编译器,所以这里可能会有一些明显的错误。但试试这个。

假设您有一个班级,例如:

public class Test {
    public String msg;
}

你可以使用它,而不是你的gson示例中的字符串。

public static void main(String args[]) {
    Test test = new Test();
    test.msg = "success"
    Gson gson = new Gson();
    String json = gson.toJson(test);
}

答案 1 :(得分:3)

对于您不想使用POJO或地图的简单情况,您只需创建一个JsonObject,其行为接近地图,这样您就可以将字符串作为值传递并提供属性名称JsonObject的toString()将采用JSON格式。所以你可以做到以下几点:

JsonObject jObj = new JsonObject();
jObj.addProperty("msg", msg);
System.out.println(jObj);

答案 2 :(得分:0)

GSon不保存变量名称,它保存序列化类的字段名称

public class StringSerialize{
      private String msg;
      ......
}

答案 3 :(得分:0)

我认为你做错了。 你的变量msg只是保存数据。 试试这个,让我知道它是否有帮助

    Map<String,String> map = new HashMap<>();       
    map.put("msg", "success");
    Gson gson = new GsonBuilder().serializeNulls().create();
    String json = gson.toJson(map);
    System.out.println(json);

答案 4 :(得分:0)

Map<String, String> m = new HashMap<String, String>();
m.put("msg", "success");
Gson gson = new GsonBuilder().create();
System.out.println(gson.toJson(m));

<强>结果

{"msg":"success"}

答案 5 :(得分:-1)

试试这个例子:
首先创建一个模型类

TagManager

你的成员的名字是你的json的关键

class Model {
    public String msg;
}

这是由github上的gson存储库链接的非常好的gson-tutorial