反序列化 json,其中属性与内置数据类型同名,在 C# 中

Posted

技术标签:

【中文标题】反序列化 json,其中属性与内置数据类型同名,在 C# 中【英文标题】:Deserialize json where an attribute has the same name as a built in datatype, in C# 【发布时间】:2021-12-19 00:10:58 【问题描述】:

我遇到了一个谷歌找不到任何解决方案的问题...

   javascriptSerializer js = new JavaScriptSerializer();
   MyClass myObject = js.Deserialize<MyClass>(jsonstring); 

如果json数据中的一个属性叫做“short”呢? 我不能像这样上课:

public class MyClass

   public int A;        
   public int B;       
   public int short;

那么我怎样才能以一种简单的方式将 jsonstring 放入一个对象中呢? 非常感谢我能得到的所有帮助。

【问题讨论】:

这能回答你的问题吗? JavaScriptSerializer - custom property name 特别是that 回答... 【参考方案1】:

您可以在中使用@

public class MyClass

   public int A;        
   public int B;       
   public int @short;

【讨论】:

您能否在回答中澄清@ 在这种情况下的含义?【参考方案2】:

short 是关键字(documentation;您需要将变量称为其他名称。Short 可以正常工作,因为关键字区分大小写,并且所有关键字都是小写。

在@Balastrong's answer:

public class MyClass

   public int A;        
   public int B;       
   public int @short;

@ 符号被用作“逐字标识符”(documentation; 见第 1 条)。这允许解释器将 @short 理解为 标识符 short 而不是 关键字 short

希望这能解决一些问题。

【讨论】:

以上是关于反序列化 json,其中属性与内置数据类型同名,在 C# 中的主要内容,如果未能解决你的问题,请参考以下文章

如何反序列化 .net 核心中的 json 数据集

序列化与反序列化之JSON

序列化与反序列化的应用

使用 Json.NET 将异构 JSON 数组反序列化为协变 List<>

JSONModel开发随想

使用 Json.NET 转换器反序列化属性