gpt4 book ai didi

c# - JavaScriptSerializer 如何反序列化带有空格的标识符

转载 作者:行者123 更新时间:2023-11-30 20:57:02 25 4
gpt4 key购买 nike

我遇到的问题与此处描述的完全相同 https://stackoverflow.com/questions/12565464/javascriptserializer-deserialize-an-identifier-with-space 但没有人回答我想我会再试一次,

API 由其他人创建的形式

[{"AdvertId":"1234567","Price Original":"500","Sold":"False"}]

应用程序已经使用 JavascriptSerilalization 来填充许多其他 API 上的命名属性,所以不想真的改变它,但是我的类来保存这个数据不能有一个带有空格的属性“Price Original”,这个无法删除或替换为 _ 或其他内容。是否可以调用任何方法将字符串转换为不同的内容?

是否有任何解决方案,或者我必须使用 JSON.net 反序列化,我阅读了 DataContracts 上的一些内容,这些可能会有所帮助,但我似乎无法找到如何获得它为我的代码工作,很高兴知道无需调查此路径即可实现。

提前致谢

示例类

Class Sample
{
public int AdvertId { get; set; }
public string Price Original { get; set; }
public bool Sold { get; set; }
}

最佳答案

您仍然可以使用内置类型,但您需要使用 DataContractJsonSerializer 而不是 JavaScriptSerializer,并添加适当的 DataContractDataMember 属性 - 实现有点不同,但仍然非常简单。

一件事 - 您的 Sold 属性是 bool 值,但您的 JSON 示例中有一个字符串 - bool 值是有效的 JSON 类型,因此您可以删除引号。

一些工作代码:

JSON:

[{"AdvertId":"1234567","Price Original":"500","Sold":false}]

C#:

var ser = new DataContractJsonSerializer(typeof(Sample[]));
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(JSON))) {
Sample[] s = (Sample[])ser.ReadObject(ms);
}

[DataContract]
public class Sample {
[DataMember]
public int AdvertId { get; set; }

[DataMember(Name = "Price Original")]
public string PriceOriginal { get; set; }

[DataMember]
public bool Sold { get; set; }
}

关于c# - JavaScriptSerializer 如何反序列化带有空格的标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17150501/

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