[英]How to de-serialize JSON array of array of strings in C#
我有以下JSON格式。
{
"INIT": ["string", "string"],
"QUIT": ["string", "string", "string"],
"SYN": [
["string", "string", "string", "string"],
["string", "string", "string", "string", "string"],
["string", "string", "string"]
]
}
我正在使用以下C#类模板,
[DataContract]
public class TemplateClass
{
[DataMember(Name = "INIT")]
public string[] init;
[DataMember(Name = "QUIT")]
public string[] quit;
[DataMember(Name = "SYN")]
public Synonym[] synonyms;
}
[DataContract]
public class Synonym
{
[DataMember]
public string[] words;
}
当我运行以下代码时,它不会反序列化'SYN'中的字符串。 请参考下图。
using (StreamReader reader = new StreamReader(jsonFilePath))
{
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(TemplateClass));
dataObject = (TemplateClass) jsonSerializer.ReadObject(reader.BaseStream);
}
您的JSON具有SYN作为字符串数组的数组,您可以在c#中将其定义为'Synonym'类型的对象数组,但未指定属性。 您可以将同义词定义为字符串[] []或更改JSON以包括属性名称单词,以便:
{
"INIT": ["string", "string"],
"QUIT": ["string", "string", "string"],
"SYN": [
{"words": ["string", "string", "string", "string"]},
{"words":["string", "string", "string", "string", "string"]},
{"words":["string", "string", "string"]}
]
}
使用Newtonsoft
库和以下方法
String[] strArray = JsonConvert.DeserializeObject<string[]>(jsonArray);
这为我工作:
string json = "{\"INIT\": [\"string\", \"string\"], \"QUIT\": [\"string\", \"string\", \"string\"], \"SYN\": [ [\"string\", \"string\", \"string\", \"string\"],[\"string\", \"string\", \"string\", \"string\", \"string\"],[\"string\", \"string\", \"string\"]]}";
Dictionary<string, object> convert = new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(json);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.