C# 将一些关系序列化为JSON,但不是全部
我有以下问题:我试图使用Newtonsoft.Json包将对象(object1)序列化为Json。我需要能够将其发送到服务器。问题是object1有几个被引用的对象,其中一些应该与object1一起创建,但其中一个在服务器上是“只读”的,因此它必须作为关系发送 我使用的是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 {
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字符串,如第二个代码段所示。是。但只针对我的一个相关对象,不是所有的。只是尝试?