我正在尝试将JSON字符串反序列化为对象。
下面是JSON文本,
{
"id":1047,
"name":"City",
"attribute_list":"[\"RWC\",\"HMO\",\"SJ\",\"Ensenada\"]",
"list_type":1
}
使用的类如下,
public class TemplatesList
{
[JsonProperty("attributes")]
public List<Attributes> Attributes { get; set; }
}
public class Attributes
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("list_type")]
public string ListType { get; set; }
[JsonProperty("attribute_list")]
public List<string> ComboBoxValue { get; set; }
}
用于反序列化的代码如下,
records = JsonConvert.DeserializeObject<TemplatesList>(json);
反序列化期间,除attribute_list
之外的所有属性均正确映射,在反序列化attribute_list字段期间出现以下错误“ Cannot implicitly convert type 'string' to 'System.Collections.Generic.List<string>'
”。
请帮助我解决此问题。
谢谢
答案 0 :(得分:2)
您需要将JSON更改为以下删除转义符号的符号:
{
"id":1047,
"name":"City",
"attribute_list":["RWC","HMO","SJ","Ensenada"],
"list_type":1
}
或为您的类型创建JsonConverter,它将处理您的attribute_list到字符串集合
答案 1 :(得分:1)
尝试这样的事情:
public class Attributes
{
public int Id { get; set; }
public string Name { get; set; }
public string ListType { get; set; }
private List<string> _ComboBoxValue { get;set;}
public string ComboBoxValue
{
get
{
return "[\"" + string.Join("\",\"", _ComboBoxValue) + "\"]";
}
set
{
_ComboBoxValue = value.Split(new char[] { '[', ',', ']' }, StringSplitOptions.RemoveEmptyEntries).ToList();
}
}
}
答案 2 :(得分:1)
您可以使用Newtonsoft.Json
var files = JObject.Parse(YourJSONHere);
var recList = files.SelectTokens("$").ToList();
foreach (JObject item in recList)
{
foreach (JProperty prop in item.Children())
{
string key = prop.Name.ToString();
string value = prop.Value.ToString();
// or do whatever
}
}