繁体   English   中英

C#反序列化带有json-string的多个数组的字符串,显式列出<string>

[英]C# Deserialize string of multiple arrays with json-string in it explicit to List<string>

我有一个json-string,或更像“数组字符串”:

"[  
   {  
      "type":"radio-group",
      "label":"Radio-Button-Gruppe",
      "name":"radio-group-1556028993486",
      "className":"iCheck",
      "values":[  
         {  
            "label":"aaaaaaa",
            "value":"aaaaaaa"
         },
         {  
            "label":"bbbbbbbbb",
            "value":"bbbbbbbbb"
         },
         {  
            "label":"cccccccccccc",
            "value":"cccccccccccc"
         }
      ]
   }
],
[  
   ...
],
[  
   {  
      "type":"header",
      "label":"Überschrift"
   }
]"

现在,我想在此字符串中包含每个数组的List<string> 就像是:

List<string> x[0] = "{  
          "type":"radio-group",
          "label":"Radio-Button-Gruppe",
          "name":"radio-group-1556028993486",
          "className":"iCheck",
          "values":[  
             {  
                "label":"aaaaaaa",
                "value":"aaaaaaa"
             },
             {  
                "label":"bbbbbbbbb",
                "value":"bbbbbbbbb"
             },
             {  
                "label":"cccccccccccc",
                "value":"cccccccccccc"
             }
          ]
       }"

最好的方法是什么?

我已经尝试过JsonConvert.DeserializeObject<IEnumerable<string>>()但是我的问题是他想将我的json反序列化为一个对象。 但我想将它们保留为字符串,并将它们放入我的列表。

为什么我需要每个数组的字符串列表? 因为我在数组中使用json-strings来呈现表单。 每个数组都会显示表单的页面,而json是用于呈现此表单的数据。 为了呈现这种形式,我必须遍历所有这些数组并为每个页面呈现其中的json。

您可以使用JsonConvert.DeserializeObject<IEnumerable<JToken>>(json) ,其中json是每个顶级数组。 然后,您可以遍历结果并在每个JToken对象上使用.ToString()

正如其他人指出的那样,您没有有效的JSON,因此我没有尝试给出解析顶级数组的解决方案。

var json = @"[  
   {
      ""type"":""radio-group"",
      ""label"":""Radio-Button-Gruppe"",
      ""name"":""radio-group-1556028993486"",
      ""className"":""iCheck"",
      ""values"":[
         {  
            ""label"":""aaaaaaa"",
            ""value"":""aaaaaaa""
         },
         {
            ""label"":""bbbbbbbbb"",
            ""value"":""bbbbbbbbb""
         },
         {
            ""label"":""cccccccccccc"",
            ""value"":""cccccccccccc""
         }
      ]
   }
]";
var arrays = new[] { json };

var objectsAsStrings = new List<string>();
foreach (var array in arrays)
{
    var tokens = JsonConvert.DeserializeObject<IEnumerable<JToken>>(array);

    foreach (var token in tokens)
    {
        objectsAsStrings.Add(token.ToString());
    }
}
var json = "yourjson"; 

var jsonnew = "[" + json+ "]";

var list = JsonConvert.DeserializeObject<dynamic>(jsonnew);

var result = new List<string>();

foreach (var item in list)
{
  var str = JsonConvert.SerializeObject(item);
   result.Add(str);
}

您也可以使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM