簡體   English   中英

如何在C#中反序列化字符串數組的JSON數組

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM