【发布时间】:2017-07-28 10:18:28
【问题描述】:
我是 C# 新手,遇到了一个小问题。我有一个包含一些邮件地址的 JSON 文件。对于每个邮件地址,此 JSON 文件中有 4 个字段(名称、电子邮件 []、印记、信息 2)。 我想在我的项目中将其转换为数组或数组列表,我目前正在使用 Newtonsoft.Json 来实现这一点。
我做了一个班级地址:
public class adress
{
public string name = "";
public string[] email = {""};
public string imprint = "";
public string info2 = "";
}
这是json:
{"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"}
并尝试像这样转换它:
List<adress> adresses = new List<adress>();
string json_adress = File.ReadAllText("C:\\Mail\\adresses.json");
adresses = JsonConvert.DeserializeObject<List<adress>>(json_adress);
我收到以下错误:
"无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型 'System.Collections.Generic.List1[Mailer.adress]',因为该类型需要 JSON 数组(例如 [1, 2,3]) 正确反序列化。"`
也许有人可以帮助我更好地理解这个 json 的东西?
【问题讨论】:
-
@Aryan,不,这不应该导致上述问题
-
请注意:您不应该创建列表对象然后反序列化到此变量中。这将创建一个未使用的对象并导致无意义的分配。
-
您的 JSON 是否有外括号——
[和]——以及对象之间的逗号?如果没有外括号,您的文件就不是一个有效的 JSON 值,而是一系列串联的 JSON 值。有关正确格式,请参阅 json.org。如果您的文件确实由串联的 JSON 对象组成,您可以使用来自Load multiple concatenated JSON objects from stream 的解决方案。但请确认这是您所拥有的,因为它不是正确的 JSON。 -
所以最好这样做: List
adresses = JsonConvert.DeserializeObject - >(json_adress);??