序列化与JSON的关系,但不是全部



我有以下问题:我尝试使用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,想为之奋斗吗?

相关内容

  • 没有找到相关文章

最新更新