1
我嘗試這樣做:Java的JSON序列化和JSONObject的
import com.wordnik.swagger.annotations.Api;
import com.wordnik.swagger.annotations.ApiOperation;
import com.wordnik.swagger.annotations.ApiResponse;
import com.wordnik.swagger.annotations.ApiResponses;
import org.apache.commons.lang.Validate;
import org.json.JSONException;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.print.attribute.standard.Media;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.*;
import javax.ws.rs.core.*;
import java.io.Serializable;
public static class MyJSON implements Serializable {
private final String name = "myname";
// **Why don't I get this field serialized in the response?**
private final JSONObject jsonObject = new JSONObject();
public MyJSON() {
try {
jsonObject.put("mykey", "myvalue");
} catch (JSONException e) {
e.printStackTrace();
}
}
public String getName() { return name; }
public JSONObject getJsonObject() { return jsonObject; }
}
@GET
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Get all entities", notes = "get all entities", response = Response.class)
@ApiResponses(value = { @ApiResponse(code = 200, message = "OK status"),
public Response getList() {
return Response.ok(new MyJSON(), MediaType.APPLICATION_JSON).build();
}
我得到的迴應:
{
"name": "myname"
}
,你看,我只得到的MyJSON
的name
場沒有jsonObject
領域。
任何想法我怎麼能得到jsonObject
字段也序列化?
UPDATE:
public static class MyJSON implements Serializable {
private final String name = "myname";
private final Map somefield = new HashMap();
public String getName() { return name; }
public Map getSomefield() { return somefield; }
public void addOther(String key, String value) {
somefield.put(key, value);
}
}
MyJSON myJSON = new MyJSON();
myJSON.addOther("mhykey", "myvalue");
return Response.ok(myJSON, MediaType.APPLICATION_JSON).build();
現在,我再次得到:
{
"name": "myname" // where is the other field? (the map)
}
我再次納悶爲什麼沒有將其序列
閱讀托馬斯的評論後,我使用的地圖嘗試?請注意我不能使用特定的對象,因爲json可能會在其他場景的其他場景的特定字段中改變某個場景,所以我無法爲每個這樣的場景創建一個新類。
您是否嘗試使用簡單的'Map'而不是'JSONObject'?由於pojo被序列化爲json,當直接遇到'JSONObject'時,映射器可能會遇到問題。除此之外,反正使用特定的對象可能會更好,也就是說,您可以提供一個嵌套的pojo,它具有'mykey'字段。 –
Thomas
你想如何序列化? –
@Thomas根據您的建議更新了問題(請參閱更新)。 – Jas