C# 将json反序列化为2d数组

C# 将json反序列化为2d数组,c#,json,C#,Json,有人知道如何将包含没有参数名的json的字符串转换为C#数组吗。我的代码从RESTApi接收json,如下所示 [["name","surname","street","phone"], ["alex","smith","sky blue way","07747233279"], ["john","patterson","richmond street","07658995465"]] [Name:"alex",Surname:"smith",street:"sky blue way",pho

有人知道如何将包含没有参数名的json的字符串转换为C#数组吗。我的代码从RESTApi接收json,如下所示

[["name","surname","street","phone"],
["alex","smith","sky blue way","07747233279"],
["john","patterson","richmond street","07658995465"]]
[Name:"alex",Surname:"smith",street:"sky blue way",phone:"07747233279"],
[Name:"john",Surname:"patterson",street:"richmond street",phone:"07658995465"]]
我在这里看到的每个示例都涉及参数名,它们的json如下所示

[["name","surname","street","phone"],
["alex","smith","sky blue way","07747233279"],
["john","patterson","richmond street","07658995465"]]
[Name:"alex",Surname:"smith",street:"sky blue way",phone:"07747233279"],
[Name:"john",Surname:"patterson",street:"richmond street",phone:"07658995465"]]

我正在尝试使用JavaScriptSerializer,但我不知道如何为这种类型的JSON正确维护一个类

var input = "[[\"name\", \"surname\", \"street\", \"phone\"],\r\n\t[\"alex\", \"smith\", \"sky blue way\", \"07747233279\"],\r\n\t[\"john\", \"patterson\", \"richmond street\", \"07658995465\"]]";
var results = JsonConvert.DeserializeObject<List<List<string>>>(input);

foreach (var item in results)
    Console.WriteLine(string.Join(", ", item));

这不是OP想要的(2d数组),而是我解决这个问题的方法

似乎您有一个人员集合,因此我将创建一个Person类,如下所示:

public class Person
{
    public string Name { get; set; }
    public string Surname { get; set; }
    public string Street { get; set; }
    public string Phone { get; set; }
}
然后是一个解析器类,它将json字符串作为参数,并返回Person的集合:

public class PersonParser
{
    public IEnumerable<Person> Parse(string content)
    {
        if (content == null)
        {
            throw new ArgumentNullException(nameof(content));
        }

        if (string.IsNullOrWhiteSpace(content))
        {
            yield break;
        }

        // skip 1st array, which contains the property names
        var values = JsonConvert.DeserializeObject<string[][]>(content).Skip(1);

        foreach (string[] properties in values)
        {
            if (properties.Length != 4)
            {
                // ignore line? thrown exception?
                // ...
                continue;
            }

            var person = new Person
            {
                Name = properties[0],
                Surname = properties[1],
                Street = properties[2],
                Phone = properties[3]
            };

            yield return person;
        }
    }
}
公共类PersonParser
{
公共IEnumerable解析(字符串内容)
{
if(content==null)
{
抛出新的ArgumentNullException(nameof(content));
}
if(string.IsNullOrWhiteSpace(content))
{
屈服断裂;
}
//跳过包含属性名称的第一个数组
var values=JsonConvert.DeserializeObject(内容).Skip(1);
foreach(值中的字符串[]属性)
{
如果(properties.Length!=4)
{
//忽略行?引发异常?
// ...
继续;
}
var person=新的人
{
名称=属性[0],
姓氏=属性[1],
街道=物业[2],
电话=物业[3]
};
收益人;
}
}
}
使用代码:

string weirdJson = @"[[""name"",""surname"",""street"",""phone""],
[""alex"",""smith"",""sky blue way"",""07747233279""],
[""john"",""patterson"",""richmond street"",""07658995465""]]";

var parser = new PersonParser();
IEnumerable<Person> people = parser.Parse(weirdJson);

foreach (Person person in people)
{
    Console.WriteLine($"{person.Name} {person.Surname}");
} 
string weirdJson=@“[[“姓名”、“姓氏”、“街道”、“电话”],
[“亚历克斯”、“史密斯”、“天蓝色之路”、“07747233279”],
[“约翰”、“帕特森”、“里士满街”、“07658995465”];
var parser=newpersonparser();
IEnumerable people=parser.Parse(古怪的JSON);
foreach(人对人)
{
Console.WriteLine($“{person.Name}{person.Name}”);
} 

可能重复:您提到的帖子有字典类型json(它有键和值),而我没有,问题是我不知道如何正确维护此类json的类。第一个json字符串是。。。奇怪的如果每行有一个对象,我建议您逐行阅读字符串并解析每个字符串数组。第一个json字符串告诉我,有人显然不明白什么是json:-)有人需要解雇,并要求找到新的职业