将JSON转换为C#Array

时间:2017-07-28 10:18:28

标签: c# json

我是c#的新手并且有一点问题。我有一个包含一些mailadresses的JSON文件。对于每个mailadress,此JSON文件中有4个字段(name,email [],imprint,info2)。 我想将它转换为我的项目中的数组或arraylist,我目前正在使用Newtonsoft.Json来实现这一点。

我做了一个班级地址:

public class adress
{
    public string name = "";
    public string[]  email = {""};
    public string imprint = "";
    public string info2 = "";
}

这是json:

  

{"名称":" TEST1""电子邮件":[" test1@test.de"]"印记":" testimprint1 testimprint1"," info2":" testinfo1"}   {"名称":" TEST2""电子邮件":[" test2@test.de"]"压印&#34 ;:" testimprint2 testimprint2"," info2":" testinfo2"}   {"名称":" TEST3""电子邮件":[" test3@test.de"]"压印&#34 ;:" testimprint3 testimprint3"," info2":" testinfo3"}

并尝试将其转换为:

List<adress> adresses = new List<adress>();
string json_adress = File.ReadAllText("C:\\Mail\\adresses.json");
adresses = JsonConvert.DeserializeObject<List<adress>>(json_adress);

我收到以下错误:

  

&#34;无法将当前JSON对象(例如{&#34; name&#34;:&#34; value&#34;})反序列化为类型System.Collections.Generic.List1 [Mailer .adress]&#39;因为该类型需要一个JSON数组(例如[1,2,3])才能正确反序列化。&#34;`

也许有人可以帮助我更好地理解这个json-thing?

2 个答案:

答案 0 :(得分:5)

你几乎就在那里,但是一个小错误。您提供的内容如下。请注意分离时没有逗号。

{JSONSTUFF}
{JSONSTUFF}
{JSONSTUFF} 

但是以下说你希望它转换为List<address>,但它不是一个列表:(

JsonConvert.DeserializeObject<List<adress>>(json_adress);

所以实际上你需要提供的是一个地址列表,

[
    {JSONSTUFF},
    {JSONSTUFF},
    {JSONSTUFF},
] 

请不要忘记逗号:)

[{“name”:“test1”,“email”:[“test1@test.de”],“imprint”:“testimprint1 testimprint1”,“info2”:“testinfo1”}, {“name”:“test2”,“email”:[“test2@test.de”],“imprint”:“testimprint2 testimprint2”,“info2”:“testinfo2”}, {“name”:“test3”,“email”:[“test3@test.de”],“imprint”:“testimprint3 testimprint3”,“info2”:“testinfo3”}]

答案 1 :(得分:0)

假设文件中的每个对象后面都有换行符:

var lines = File.ReadAllLines(@"your path");
List<adress> adresses = new List<adress>();

foreach (var line in lines)
{
    adresses.Add(JsonConvert.DeserializeObject<adress>(line));
}