[英]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.