我正在使用 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/