【问题标题】:Converting Java String object into Json using Gson library使用 Gson 库将 Java String 对象转换为 Json
【发布时间】:2015-09-25 07:29:45
【问题描述】:

我能够使用 高效地将包含大量数据的复杂 Java 对象(如 ListArrayList 等)转换为 Json >Gson库如下代码

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

但如果对 String literalString 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"

我找不到任何关于这个特殊的解释 请帮忙,提前谢谢你..

【问题讨论】:

  • 如果你希望你的 json 输出是 {"msg": "success"} 尝试使用一个类,使用一个名为 msg 的字符串。
  • 可以举个例子吗?
  • 或者把字符串放在一个带有“msg”键的map中
  • gson 怎么知道你的变量叫做“msg”?如果参数是msg + msg,你希望它打印什么?
  • @LionelPort 提出了一个很好的观点,我认为你也可以使用地图。

标签: java json gson


【解决方案1】:

请注意,我很少再写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);
}

【讨论】:

    【解决方案2】:

    对于您不想使用 POJO 或映射的简单情况,您可以创建一个 JsonObject,它的行为接近映射,因此您可以将字符串作为值传递并提供 JsonObject 的属性名称toString() 将采用 JSON 格式。因此,您可以执行以下操作:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        我认为你做错了。 你的变量 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);
        

        【讨论】:

          【解决方案5】:
          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"}
          

          【讨论】:

            【解决方案6】:

            试试这个作为你的例子:
            首先创建一个模型类

            class Model {
                public String msg;
            }
            

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

            public static void main() {
                Model model = new Model();
                model.msg = "success"
                Gson gson = new Gson();
            
                String json = gson.toJson(test); // Model to json
                Model result = gson.fromJson("{\"msg\":\"success\"}", Model.class) // json to Model
            }
            

            这是一个很好的gson-tutorial github上的gson仓库链接

            【讨论】:

              猜你喜欢
              • 2011-10-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-05-19
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多