我正在使用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?
}
我将不胜感激。
答案 0 :(得分:5)
使用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"
}
答案 1 :(得分:1)
您可以使用JsonProperty属性并将名称设置为此...
`
class Output
{
public string contact_id;
public string status;
public int is_test_data;
public DateTime datesubmitted;
[JsonProperty("geocountry")]
public string variable_standard_geocountry; // <--- what should be this name for it to work?
}
` 这里是文档的链接,可能还有其他可能对您有帮助的信息。 http://james.newtonking.com/json/help/?topic=html/JsonPropertyName.htm