gpt4 book ai didi

c# - 从 JSON 中反序列化属性两次?

转载 作者:太空宇宙 更新时间:2023-11-03 22:43:02 26 4
gpt4 key购买 nike

我有一个奇怪的问题:

我有一个包含子类 B 的类 A。类 A 相当复杂并且经常更改。我只需要 A 类的一小部分属性和 B 类的完整 json 表示,即可将其传递给不同的服务。

看起来像这样

[DataContact]
public class A
{
[DataMember]
public B Inner {get; set;}
}

[DataContact]
public class B
{
[DataMember]
public int SomeThing {get; set;}
}

我想实现的是:

[DataContact]
public class ADesired
{
[DataMember]
public B Inner {get; set;}

[DataMember]
public string InnerAsJsonString {get; set;}
}

我尝试了最明显的想法(例如,引用相同名称的 Jsonproperty,但 NewtonSoft.Json 拒绝让这项工作生效)

到目前为止我尝试了什么:

  1. JsonConverter,根本不起作用。

  2. Json 属性:

    [DataContact]
    public class ADesired
    {
    [JsonProperty("Source")]
    public B Inner {get; set;}

    [JsonProperty("Source")]
    public string InnerAsJsonString {get; set;}
    }

    这在运行时不起作用,因为检测到对同一属性的引用。

  3. 核选项:在 Controller 中将字符串反序列化两次,但这感觉不对。

最佳答案

一个选择是在类中序列化它

[DataContact]
public class ADesired
{
[DataMember]
public B Inner {get; set;}
public string InnerAsJsonString => Newtonsoft.Json.JsonConvert.SerializeObject(Inner);
}

关于c# - 从 JSON 中反序列化属性两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51359983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com