【问题标题】:Convert JSON with illegal characters in property name [duplicate]使用属性名称中的非法字符转换 JSON [重复]
【发布时间】:2021-09-03 05:43:16
【问题描述】:

事先;我正在使用旧版本的 Newtonsoft.Json (4.0.8.0)。

所以我正在尝试为网络服务器应用程序编写一个 .NET 客户端。 要将所有传入数据包从 json 结构转换为 .NET 对象,我确实使用带有内置函数 JToken.ToObject 的 JSON 序列化器。 这要求目标 .net 类具有与传入的 json 数据完全命名的所需属性。

现在我遇到了一个数据包,其中包含 C# 范围内的无效属性名称(我认为总体上是 .NET)。 看起来像这样。

"12345" : {
  "Name1/Part2": {}
  "Name2/Part2": {}
  "Name3/Part2": {}
  "Name4/Part2": {}
  "Name5/Part2": {}
}

相同的 .net 代码将是。

class DataPacket {
  public DummyObject 12345 {get; set;}


  public class DummyObject {
    public object Name1/Part2 {get; set}
    public object Name2/Part2 {get; set}
    public object Name3/Part2 {get; set}
    public object Name4/Part2 {get; set}
    public object Name5/Part2 {get; set}
  }
}

所有属性名称都是非法的('以数字开头','非法字符 -> /')。

知道如何使用 Newtonsoft 的 Major 4 版本解决这个问题吗?

非常感谢

【问题讨论】:

    标签: c# json json.net


    【解决方案1】:

    我相信您可以使用 jsonproperty 属性,所以对于第一个属性,例如:

    class DataPacket{
                        [JsonProperty(PropertyName="1234")]
                        public DummyObject OneTwoThreeFour {get;set;}//or whatever you want to name.
                    }
    

    为您需要转换的每个具有非法名称的 json 属性执行此操作

    【讨论】:

    • 我认为是JsonProperty 而不是JSONProperty
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    相关资源
    最近更新 更多