我是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?
答案 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));
}