我有一个像这样的JSON数组:
{
"forum":[
{
"id":"1",
"created":"2010-03-19 ",
"updated":"2010-03-19 ","user_id":"1",
"vanity":"gamers",
"displayname":"gamers",
"private":"0",
"description":"All things gaming",
"count_followers":"62",
"count_members":"0",
"count_messages":"5",
"count_badges":"0",
"top_badges":"",
"category_id":"5",
"logo":"gamers.jpeg",
"theme_id":"1"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想使用jQuery .getJSON来返回每个数组值的值,但我不确定如何访问它们.
到目前为止,我有这个jQuery代码:
$.get('forums.php', function(json, textStatus) {
//optional stuff to do after success
alert(textStatus);
alert(json);
});
Run Code Online (Sandbox Code Playgroud)
我怎么能用jQuery做到这一点?
我想我需要创建一个专家ObjectMapper,但无法找到任何示例代码来启动该过程.
JSON的创建者使用.Net和public属性,因此使用具有大写首字母的字段名称.我正在将JSON解析为POJO,所以我想使用小写的首字母.
在他们结束时:
public class Facet
{
public string Name { get; set; }
public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
因此,我必须:
public class Facet {
public String Name;
public String Value;
}
Run Code Online (Sandbox Code Playgroud)
我更喜欢:
public class Facet {
public String name;
public String value;
}
Run Code Online (Sandbox Code Playgroud)
我是对的,这可以用一个ObjectMapper吗?
我有一个Web服务的结果,它返回一个布尔值或一个单例映射,例如
布尔结果:
{
id: 24428,
rated: false
}
Run Code Online (Sandbox Code Playgroud)
地图结果:
{
id: 78,
rated: {
value: 10
}
}
Run Code Online (Sandbox Code Playgroud)
我个人可以轻松地映射这两个,但我如何一般地做到这一点?
基本上我想把它映射到类,如:
public class Rating {
private int id;
private int rated;
...
public void setRated(?) {
// if value == false, set rated = -1;
// else decode "value" as rated
}
}
Run Code Online (Sandbox Code Playgroud)
所有多态示例都使用@JsonTypeInfo基于数据中的属性进行映射,但在这种情况下我没有该选项.
@JsonProperty("rated")
public void setRating(JsonNode ratedNode) {
JsonNode valueNode = ratedNode.get("value");
// if the node doesn't exist then it's the boolean value
if (valueNode …Run Code Online (Sandbox Code Playgroud) 我受限于给定的JSON结构:
{
"metadata": {
"eventName": "FooEvent",
"field1": "bla"
},
"event": { ... }
}
Run Code Online (Sandbox Code Playgroud)
如何使用多态反序列化和嵌套类型信息属性对其进行反序列化?我正在使用metadata.eventName嵌套属性,@JsonTypeInfo如下所示:
@JsonTypeInfo(
use = Id.NAME,
include = As.EXISTING_PROPERTY,
visible = true,
property = "metadata.eventName"
)
@JsonSubTypes({
@Type(name="fooEvent", value = FooEvent.class)
@Type(name="barEvent", value = BarEvent.class)
})
public class EventPayload<T> {
private Metadata metadata;
private T event;
}
Run Code Online (Sandbox Code Playgroud)
鉴于配置杰克逊抱怨该物业无法找到:
com.fasterxml.jackson.databind.JsonMappingException: Unexpected token (END_OBJECT), expected FIELD_NAME: missing property 'metadata.eventName' that is to contain type id (for class EventPayload)
at [Source: {
"metadata": {
"eventName": "FooEvent", …Run Code Online (Sandbox Code Playgroud) REST API 的响应始终返回具有以下结构的 JSON:
{
"status": "<status_code>",
"data": <data_object>
}
Run Code Online (Sandbox Code Playgroud)
我的问题是 的值data没有唯一的类型,但它可以是字符串、JSON 对象或 JSON 数组,具体取决于调用的端点。我不知道如何以正确的方式反序列化它来创建不同的 Java 对象......
例如,我已经准备了一些POJO:根元素
public class ApiResult {
@SerializedName("status")
public String status;
@SerializedName("data")
public JsonElement data; // should I define it as a JsonElement??
}
Run Code Online (Sandbox Code Playgroud)
以及反映两个端点的两个对象:
// "data" can be a list of NavItems
public class NavItem {
@SerializedName("id")
public String id;
@SerializedName("name")
public String name;
@SerializedName("icon")
public String icon;
@SuppressWarnings("serial")
public static class List extends ArrayList<NavItem> {}
}
Run Code Online (Sandbox Code Playgroud)
和
// "data" can be …Run Code Online (Sandbox Code Playgroud) 我正在从 Web 服务检索 JSON。有时 JSON 中的属性会作为对象返回,有时它是对象的数组。如何编写要反序列化的 Java 类,以使用 Jackson 的正确反序列化此属性ObjectMapper?我可以使用 ObjectMapper 来帮助解决这个问题吗?
带有对象的 JSON:
\n\n"results": {\n "account": {\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0"expiration": "2012-11-16"\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\nJSON 与集合
\n\n"results": {\n\xc2\xa0\xc2\xa0"account": [{\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0"expiration": "2012-11-16"\n }]\n}\nRun Code Online (Sandbox Code Playgroud)\n