C#反序列化多个数组的字符串,其中包含json字符串,并显式列出<;字符串>;

C#反序列化多个数组的字符串,其中包含json字符串,并显式列出<;字符串>;,c#,arrays,json,parsing,C#,Arrays,Json,Parsing,我有一个json字符串,或者更像一个“数组字符串”: 现在我想得到这个字符串中每个数组的列表。比如: List<string> x[0] = "{ "type":"radio-group", "label":"Radio-Button-Gruppe", "name":"radio-group-1556028993486", "className":"iCheck", "values

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

现在我想得到这个字符串中每个数组的
列表。比如:

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"
             }
          ]
       }"
列表x[0]=“{
“类型”:“无线电组”,
“标签”:“单选按钮Gruppe”,
“名称”:“无线电组-1556028993486”,
“类名”:“iCheck”,
“价值”:[
{  
“标签”:“AAAAA”,
“价值”:“AAAAA”
},
{  
“标签”:“bbbbbbbbb”,
“值”:“bbbbbbb”
},
{  
“标签”:“CCCC”,
“价值”:“CCCC”
}
]
}"
最好的方法是什么

我已经尝试了
JsonConvert.DeserializeObject()
,但我的问题是他想将我的JSON反序列化为一个对象。但是我想把它们作为一个字符串保留下来,并把它们放在我的列表中

为什么我需要每个数组的字符串列表? 因为我使用数组中的json字符串来呈现表单。每个数组向您显示表单的一页,json是呈现此表单的数据。
要呈现这个表单,我必须通过一个循环遍历所有数组,并呈现每个页面中的json。

您可以使用
JsonConvert.DeserializeObject(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=@“[
{
“”类型“”:“”无线电组“”,
“”标签“”:“”单选按钮Gruppe“”,
“名称”:“无线电组-1556028993486”,
“className”:“iCheck”,
“价值观”:[
{  
“标签”:“aaaaaaa”,
“值”:“aaaaaaaaa”
},
{
“标签”:“bbbbbbb”,
“值”:“bbbbbbb”
},
{
“标签”:“CCCC”,
“值”:“cccc”
}
]
}
]";
var arrays=new[]{json};
var objectsassstrings=新列表();
foreach(数组中的变量数组)
{
var tokens=JsonConvert.DeserializeObject(数组);
foreach(令牌中的var令牌)
{
objectsAsString.Add(token.ToString());
}
}
var json=“yourjson”;
var jsonnew=“[”+json+“]”;
var list=JsonConvert.DeserializeObject(jsonnew);
var result=新列表();
foreach(列表中的变量项)
{
var str=JsonConvert.SerializeObject(项);
结果:添加(str);
}

您也可以使用它。

最简单的方法是反序列化到一个对象,然后获取所需的数据并将每个数据序列化回JSON。但不确定为什么要将字符串放在列表中,因为在需要保留数据或将其发送到某处的任何时候,您都可以将其序列化回字符串。将其反序列化为对象,然后执行任何需要的操作,例如将其设为“字符串”。我不知道你把它们作为一个字符串是什么意思,因为它不是一个字符串。这句话也毫无意义:“数组字符串”我需要每个数组的完整JSON作为数据。JSON将在FormBuilder中用于呈现我的表单。因为这个表单有制表符,每个数组描述它的一页。我必须在循环中遍历所有数组才能呈现我的表单。我不能根据需要将它反序列化为列表对象,因为他不想反序列化“{”“}”之间的所有内容我相信这样你就更容易编写一个自定义解析器来搜索匹配的方括号,并将它们之间的每一项放入你的集合中。当心ReGEX(你可以认为它是该任务的一个选项)为长字符串消耗大量资源。谢谢,问题解决了
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);
}