0

我有我的 REST API,它公开了由一些只读字段组成的资源。这些字段由系统自动计算并以 JSON 表示形式公开,它们是域实体的一部分。
我已经在计算结果的方法上使用框架(JacksonMapper)注释成功了,例如:

@JsonProperty
public boolean isAnonymous(){
    //some logic
    return result;
}

直到这些资源用于读取目的,一切都很好,update例如,当我必须使用写操作时,问题就出现了。
问题是我用于客户端(angularjs)的框架,当我搜索资源修改并更新它时,还将这些字段发送到更新 API,例如:

function test(MyResource){
    MyResource.get({id: 0}, function(myResource){
        myResource.writeableProperty = 'modified';
        myResource.$update(function(res){
             console.log('everything went ok');
        });
    }
}

在这种情况下,问题是angular为更新发送的 JSON:

{
    "id": 0,
    "writeableProperty": "modified"
    "anonymous": true
}

在这种情况下,JSON 的反序列化失败,因为我的域实体anonymous中不存在该属性的问题。 那么,我该如何管理这些只读属性,让 JSON 的表示不同于您从服务器获得的内容以及您必须发送到服务器的内容是否正确? 或者最好使用不同的资源,也可以发送该属性,在我的应用程序中创建相关的 DTO,然后忽略其上的属性(或者如果有人尝试更改它,则发送错误)?

4

1 回答 1

1

如果你想在服务器端忽略这个属性,你不能使用JsonIgnoreProperties注解。

@JsonIgnoreProperties(ignoreUnknown=true)
public class MyObject {
   ....
}

这将仅序列化在您的类中声明的属性。

于 2013-07-01T16:23:37.090 回答