gpt4 book ai didi

c# - 用C#/NewtonSoft反序列化JSON时,能不能把一些结果展平?

转载 作者:太空狗 更新时间:2023-10-29 21:50:54 25 4
gpt4 key购买 nike

如果我的 JSON 是:

{ cat: 1, dog: 2, price: { initial: 1, new: 2 }}

是否可以将其反序列化为具有 cat、dog、initialprice、newprice 属性的单个类?

也许有一个属性或方法可以使用 JsonProperty 属性来执行此操作。

我正在使用 Newtonsoft.Json 库。

最佳答案

以下内容有点粗略,但可以完成我认为您正在尝试做的事情。大小写与您的 JSON 不同,因此它不会在不进行一些修改的情况下往返于您的输入。

    public class TestClass
{
public decimal Cat { get; set; }
public decimal Dog { get; set; }
[Newtonsoft.Json.JsonProperty]
private Price Price { get; set; }

[Newtonsoft.Json.JsonIgnore]
public decimal InitialPrice
{
get { return this.Price.Initial; }
}

[Newtonsoft.Json.JsonIgnore]
public decimal NewPrice
{
get { return this.Price.New; }
}
}

class Price
{
public decimal Initial { get; set; }
public decimal New { get; set; }
}

快速测试方法:

    static void Main(string[] args)
{
const string JSON = "{ cat: 1, dog: 2, price: { initial: 1, new: 2 } }";

var deserialised = Newtonsoft.Json.JsonConvert.DeserializeObject<TestClass>(JSON);
var serialised = Newtonsoft.Json.JsonConvert.SerializeObject(deserialised);
}

我们已经定义了一个 Price 类型来匹配从 JSON 中的 price 属性自然反序列化的内容,将其设为私有(private),然后使用 TestClass 上的两个只读属性访问其成员。所以 - 代码将看到从您定义的 JSON 输入解析的您想要的结构(四个属性,Cat、Dog、InitialPrice、NewPrice)。

关于c# - 用C#/NewtonSoft反序列化JSON时,能不能把一些结果展平?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14455374/

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