Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JSON转换为C#数组_C#_Json - Fatal编程技术网

将JSON转换为C#数组

将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

我是新来c#的,有点小问题。我有一个JSON文件,其中包含一些MailAddress。对于每个MailAddress,此JSON文件中有4个字段(名称、电子邮件[]、印记、信息2)。 我想在我的项目中将其转换为数组或arraylist,目前我正在使用Newtonsoft.Json来实现这一点

我做了一个课堂演讲:

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,很高兴能帮上忙:)