5

想象一个简单的 JSON 响应,例如:

{
    "success": false,
    "message": "PEBKAC"
}

鉴于我有booleanString变量,在 Java 中将它们转换为 JSON 的最简单方法是什么,而不求助于String.format和朋友。

我更熟悉 C#,使用内置JavaScriptSerializer非常简单:

var success = false;
var message = "PEBKAC";
var serializer = new JavaScriptSerializer();
var json = serializer.Serialize(new { success, message });

Java有什么这么简单的吗?

4

6 回答 6

9

使用JSON
序列化

  org.json.JSONObject obj = new org.json.JSONObject();
  obj.put("success", false);
  obj.put("message", "PEBKAC");
  obj.toString(); 

反序列化

org.json.JSONObject obj = new org.json.JSONObject(responseAsString);  
obj.optBoolean("success"); // false
obj.optString("message"); // PEBKAC

使用谷歌-gson

public class MyObject
{
   private String message;
   private boolean success;
   public MyObject(String message, boolean success)
   {
      this.message = message;
      this.success = success;
   }
}  

序列化

   MyObject obj = new MyObject("PEBKAC", false);  
   new com.google.gson.Gson().toJSON(obj);

反序列化

   MyObject obj = new com.google.gson.Gson().fromJSON(responseAsString, MyObject.class);
   obj.getMessage();
   obj.getSuccess();
于 2012-12-17T12:00:40.187 回答
1

你看过gson吗?

http://code.google.com/p/google-gson/

//亨里克

于 2012-12-17T11:55:12.800 回答
1

有可用的 JSON 解析器库,其中之一是 Jackson ( http://jackson.codehaus.org )。Jackson 的 ObjecMapper 类 ( http://jackson.codehaus.org/1.9.9/javadoc/org/codehaus/jackson/map/ObjectMapper.html ) 为您提供类似于 C# 中的 JavaScriptSerializer 的功能。

于 2012-12-17T11:58:32.437 回答
0

使用 org.json.JSONObject

http://www.json.org/javadoc/org/json/JSONObject.html

您可以创建一个 JSON 对象,然后使用 put 方法添加您的值。然后调用jsonObj.toString()获取 JSON

于 2012-12-17T11:55:49.417 回答
0

看看谷歌的 GSON。是一个与 JSON 一起工作的 Java 库。

http://code.google.com/p/google-gson/

这里有一些例子:

https://sites.google.com/site/gson/gson-user-guide#TOC-Primitives-Examples

更新

与@Ilya 代码一样的示例在链接中。但这将是这样的:

目的:

public class MyObj
{
   private String message;
   private boolean success;
   public MyObj(String message, boolean success)
   {
      this.message = message;
      this.success = success;
   }
} 

转换为 JSON:

import com.google.gson.Gson;

public class Main {

    public static void main(String[] args) {
        MyObj obj = new MyObj("PEBKAC",false);
        Gson gson = new Gson();
        System.out.println(gson.toJson(obj));
    }
}

输出:

{"message":"PEBKAC","success":false}
于 2012-12-17T11:55:57.770 回答
0

java中有很多简单的库可以处理JSON,查看:JSON

Java 中没有内置支持

于 2012-12-17T11:56:17.310 回答