我有以下问题:我尝试使用newtonsoft.json软件包将对象(object1)序列化为JSON。我需要能够将其发送到服务器。问题是Object1具有几个引用的对象,其中有些应与Object1一起创建,但是其中一个是在服务器上"仅读",因此必须将其作为关系发送。
我正在使用string json = JsonConvert.SerializeObject
示例:
<code>
[DataContract]
public class Object1
{
// Simple Properties
[JsonProperty(PropertyName = "ext_ref", Order = 1)]
public string ExtRef { get; set; }
[JsonProperty(PropertyName = "external_comment", Order = 1)]
public string ExternalComment { get; set; }
[JsonProperty(PropertyName = "internal_comment", Order = 1)]
public string InternalComment { get; set; }
[JsonProperty(PropertyName = "object2")]
public Object2 Object2 { get; set; }
[JsonProperty(PropertyName = "object3")]
public Object3 Object3 { get; set; }
}
</code>
这就是我获得ATM的方式。这对于大多数对象都很好,但不是全部:
{
"data": {
"attributes": {
"ext_ref": "2573421",
"external_comment": "Ext Comment",
"internal_comment": "Internal comment",
"object2": {
"data": {
"attributes": {
"xx":"XX",
"yy":"YY"
},
"id": "1",
"type": "object2s"
},
"object3": {
"data": {
"attributes": {
"xx":"XX",
"yy":"YY"
},
"id": "1",
"type": "object3s"
}
},
},
"type": "object1"
}
因为对象2是"特殊情况",在其中只能由服务器理解为链接,因此需要看起来像这样:
{
"data": {
"attributes":{
"ext_ref": "2573421",
"external_comment": "Ext Comment",
"internal_comment": "Internal comment",
"object3": {
"data": {
"attributes": {
"xx":"XX",
"yy":"YY"
},
"id": "1",
"type": "object3s"
}
},
"type": "object1",
"relationships":{
"object2": {
"data": {
"id": "1",
"type": "object2s"
}
}
}
}
现在我的问题是:有没有简单的方法来执行此操作?
我尝试了以下内容:使用jsonaperializer的关系属性更改object2.ID属性的JSONPROPERTY设置删除对象22.ID
我不禁认为必须使用一些我可以使用的属性才能获得所需的结果,但是ATM。我被困
[编辑]我添加了一个示例对象结构
好吧,我发现了错误。我正在使用newtonsoft.json使用此调用来创建JSON: string json = JsonConvert.SerializeObject(order, Format.None,
new JsonApiSerializerSettings {
NullValueHandling = NullValueHandling.Ignore
});
引起问题的部分是格式。我将其更改为null,并得到了我想要的结果。Big Woop,想为之奋斗吗?