Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将一些关系序列化为JSON,但不是全部_C#_Json_Serialization_Json.net - Fatal编程技术网

C# 将一些关系序列化为JSON,但不是全部

C# 将一些关系序列化为JSON,但不是全部,c#,json,serialization,json.net,C#,Json,Serialization,Json.net,我有以下问题:我试图使用Newtonsoft.Json包将对象(object1)序列化为Json。我需要能够将其发送到服务器。问题是object1有几个被引用的对象,其中一些应该与object1一起创建,但其中一个在服务器上是“只读”的,因此它必须作为关系发送 我使用的是string json=JsonConvert.SerializeObject 例如: <code> [DataContract] public class Object1 {

我有以下问题:我试图使用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"
}
由于object2是一个“特殊情况”,服务器只能将其理解为链接,因此它需要如下所示:

{
"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"
            }
        }
     }
}
现在我的问题是:有没有简单的方法

我尝试了以下方法: 使用JsonApiSerializer中的Relationship属性 更改object2.id属性的JsonProperty设置 删除object2.id

我忍不住想,一定有一些属性我可以用来得到想要的结果,但atm。我卡住了

[编辑]
我添加了一个示例对象结构

好的,我发现了错误。我正在使用Newtonsoft.Json通过以下调用创建Json:
string json=JsonConvert.SerializeObject(顺序、格式、无、,
新的JsonApiSerializerSettings{
NullValueHandling=NullValueHandling.Ignore
});

导致问题的部分是Format.None,这使得Json成为基本Json,而不是通常的格式。我把它改为null,得到了我想要的结果。Big woop,想打架吗?

好的,我发现了错误。我正在使用Newtonsoft.Json通过以下调用创建Json:
string json=JsonConvert.SerializeObject(顺序、格式、无、,
新的JsonApiSerializerSettings{
NullValueHandling=NullValueHandling.Ignore
});

导致问题的部分是Format.None,这使得Json成为基本Json,而不是通常的格式。我把它改为null,得到了我想要的结果。Big woop,想为此而斗争吗?

看,一些例子。所以我试图简化这个,如果我错了,请纠正我。您将获得一个JSON字符串,如第一个代码段所示,但您希望获得JSON字符串,如第二个代码段所示。是。但只针对我的一个相关对象,不是全部。只是尝试?看,一些例子。所以我试图简化这个,如果我错了,请纠正我。您将获得一个JSON字符串,如第一个代码段所示,但您希望获得JSON字符串,如第二个代码段所示。是。但只针对我的一个相关对象,不是所有的。只是尝试?