将JSON转换为C#数组
我是新来c#的,有点小问题。我有一个JSON文件,其中包含一些MailAddress。对于每个MailAddress,此JSON文件中有4个字段(名称、电子邮件[]、印记、信息2)。 我想在我的项目中将其转换为数组或arraylist,目前我正在使用Newtonsoft.Json来实现这一点 我做了一个课堂演讲:将JSON转换为C#数组,c#,json,C#,Json,我是新来c#的,有点小问题。我有一个JSON文件,其中包含一些MailAddress。对于每个MailAddress,此JSON文件中有4个字段(名称、电子邮件[]、印记、信息2)。 我想在我的项目中将其转换为数组或arraylist,目前我正在使用Newtonsoft.Json来实现这一点 我做了一个课堂演讲: public class adress { public string name = ""; public string[] email = {""}; pu
public class adress
{
public string name = "";
public string[] email = {""};
public string imprint = "";
public string info2 = "";
}
这是json:
{“name”:“test1”,“email”:[“test1@test.de“],“印记”:“testimprint1 testimprint1”,“信息2”:“testinfo”}
{“name”:“test2”,“email”:[“test2@test.de“],“印记”:“testimprint2 testimprint2”,“信息2”:“testinfo”}
{“name”:“test3”,“email”:[“test3@test.de“],“印记”:“testimprint3 testimprint3”,“信息2”:“testinfo”}
然后试着像这样转换它:
List<adress> adresses = new List<adress>();
string json_adress = File.ReadAllText("C:\\Mail\\adresses.json");
adresses = JsonConvert.DeserializeObject<List<adress>>(json_adress);
列表地址=新列表();
字符串json_address=File.ReadAllText(“C:\\Mail\\adress.json”);
adress=JsonConvert.DeserializeObject(json\U adress);
我得到以下错误:
无法将当前JSON对象(例如{“名称”:“值”})反序列化为类型“System.Collections.Generic.List1[Mailer.Address]”,因为该类型需要JSON数组(例如[1,2,3])才能正确反序列化`
也许有人能帮我更好地理解这个json吗?你就快到了,但有一个小错误。您提供的内容如下。请注意,分隔处没有逗号
{JSONSTUFF}
{JSONSTUFF}
{JSONSTUFF}
但下面的说明是您希望将其转换为列表
,但它不是列表:(
JsonConvert.DeserializeObject(json_地址);
所以实际上你需要提供的是一份地址清单
[
{JSONSTUFF},
{JSONSTUFF},
{JSONSTUFF},
]
请不要忘记逗号:)
[{“name”:“test1”,“email”:[“test1@test.de“],“印记”:“testimprint1 testimprint1”,“信息2”:“testinfo”},
{“name”:“test2”,“email”:[“test2@test.de“],“印记”:“testimprint2 testimprint2”,“信息2”:“testinfo”},
{“name”:“test3”,“email”:[“test3@test.de“],“print”:“testimprint3 testimprint3”,“info2”:“testinfo”}]假设文件中每个对象后面都有换行符:
var lines = File.ReadAllLines(@"your path");
List<adress> adresses = new List<adress>();
foreach (var line in lines)
{
adresses.Add(JsonConvert.DeserializeObject<adress>(line));
}
var lines=File.ReadAllLines(@“您的路径”);
列表地址=新列表();
foreach(行中的var行)
{
Add(JsonConvert.DeserializeObject(行));
}
@Aryan,不,这不应该导致上述问题。请注意:您不应该创建list对象,然后反序列化到此变量中。这将创建一个未使用的对象,并导致无意义的分配。您的JSON是否有外部括号--[
和]
--以及对象之间的逗号?如果没有外括号,您的文件就不是单个有效的JSON值,而是一系列JSON值的串联。有关正确的格式,请参阅。如果您的文件确实由连接的JSON对象组成,那么您可以使用来自的解决方案。但请确认这是您拥有的,因为它不是正确的JSON。所以最好这样做:List address=JsonConvert.DeserializeObject(JSON_address);??绝对地准确@hendrikruhen,很高兴能帮上忙:)