我目前运行的服务器提供如下数据:
单一实体
{"id":"11","name":"hello",....}
实体列表
[{single entity format},{},...]
但是,Ember Data希望数据遵循JSON API spec,格式为
{"entity":{"id":"11","name":"hello",....}} OR {"entities":[{},{},{}...]}
否则会返回错误:
Your server returned a hash with the key 0 but you have no mapping for it
我目前有一个responseFactory
,它将构建响应作为一个地图,其中键是ember模型(“users”/“user”)实体/列表和值是列表/实体本身
有更好/更清洁的方式吗?
答案 0 :(得分:3)
请在github上查看此项目:https://github.com/brunorg/ember-java
你需要的是@JsonRootName
杰克逊注释。我相信这是更清洁的方式。
答案 1 :(得分:1)
在你的情况下尝试使用类似的类:
import java.util.ArrayList;
import java.util.HashMap;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonRootName;
@JsonRootName("entity")
public class Entity {
@JsonProperty
public ArrayList<HashMap> entity = new ArrayList<HashMap>();
public Entity() { }
public User(HashMap<String,Object> fields) {
entity.add(fields);
}
}
并生产:
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Entity producePost(Object object) {
HashMap<String, Object> f = new HashMap<String,Object>();
f.put("id", "11");
f.put("name", "hello...");
return new Entity(f);
}
它允许以Ember可以接受的格式生产 像这样
{
"entity" : [ {
"id" : "11",
"name" : "hello...."
} ]
}