c# - 如何命名 c# 类字段以便能够反序列化具有无效字符的 json 字段名称

标签 c# json.net json-deserialization

我正在使用 JSON.NET 反序列化我拥有的一些 JSON 响应。 到目前为止,我已经成功了。 为了让 JSON.NET 正确地反序列化对象,类中的字段名称需要完全按照 JSON 中的方式调用。问题是我有一些名称中包含时髦字符的字段,我无法在 C# 中使用这些字符,例如 {"(.

有谁知道如何重命名字段以便正确映射它们?

这里是一个简短的例子,说明什么是有效的。

JSON 输入:

{
    "contact_id": "",
    "status": "Partial",
    "is_test_data": "1",
    "datesubmitted": "2013-10-25 05:17:06"
}

反序列化类:

class DeserializedObject
{
    public string contact_id;
    public string status;
    public int is_test_data;
    public DateTime datesubmitted;
}

反序列化:

var deserialized = JsonConvert.DeserializeObject<DeserializedObject>(jsonInput);

这得到了正确的映射。当我尝试处理以下字段时,问题就开始了:

{
    "contact_id": "",
    "status": "Partial",
    "is_test_data": "1",
    "datesubmitted": "2013-10-25 05:17:06",
    "[variable("STANDARD_GEOCOUNTRY")]": "Germany"
}

反序列化类:

class Output
{
    public string contact_id;
    public string status;
    public int is_test_data;
    public DateTime datesubmitted;
    public string variable_standard_geocountry; // <--- what should be this name for it to work?
}

如有任何帮助,我将不胜感激。

最佳答案

使用 JSON.NET,您只需要在属性上放置一个 JsonProperty 属性,例如:

class Output
{
    public string contact_id;
    public string status;
    public int is_test_data;
    public DateTime datesubmitted;

    [JsonProperty("[variable(\"STANDARD_GEOCOUNTRY\")]")]
    public string variable_standard_geocountry; // <--- what should be this name for it to work?
}

现在将反序列化。这假定您的 JSON 格式正确,带有这些引号,例如:

{
    "contact_id": "",
    "status": "Partial",
    "is_test_data": "1",
    "datesubmitted": "2013-10-25 05:17:06",
    "[variable(\"STANDARD_GEOCOUNTRY\")]": "Germany"
}

关于c# - 如何命名 c# 类字段以便能够反序列化具有无效字符的 json 字段名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19669944/

相关文章:

c# - ResizeBuffers 时 DirectX 无效调用

c# - Activator.CreateInstance 性能替代方案

c# - 如何避免序列化 float 组属性

java - 我怎样才能让 jackson 反序列化到我自己的数组实现中

json - 反序列化匿名 JSON 数组?

c# - 如何在反序列化 JSON 时在类中定义变量以接收 List<string> 或字符串?

c# - 无法翻译部分或所有身份引用 c#

c# - 绑定(bind)自定义属性类 WPF

c# - 将 Json 对象数组转换为最合适的 .Net 集合

c# - 将Json String反序列化为多种Object类型