C# 将json文件作为参数传递给方法
我正在学习如何使用Newtonsoft.json处理json数据 我将有效的json文件存储在控制台应用程序的一个文件夹中,并调用 将处理json文件的方法C# 将json文件作为参数传递给方法,c#,json.net,C#,Json.net,我正在学习如何使用Newtonsoft.json处理json数据 我将有效的json文件存储在控制台应用程序的一个文件夹中,并调用 将处理json文件的方法 static void Main(string[] args) { IEnumerable<IEnumerable<string>> result; string pathToFile = @"C:\DevelopmentJson\Con
static void Main(string[] args)
{
IEnumerable<IEnumerable<string>> result;
string pathToFile = @"C:\DevelopmentJson\ConsoleApp1\File\my_test.json";
MyReader objReader = new MyReader();
result = objReader.Export(pathToFile).ToList();
Console.WriteLine("Hello");
}
如何解决此错误消息?不采用路径,而是采用实际的json字符串
您可以使用获取文件的内容
类似这样的内容(检查等省略):
public IEnumerable导出(字符串路径)
{
字符串json=File.ReadAllText(路径);
var document=JToken.Parse(json);
var data=新列表();
.....
返回数据;
}
请注意,使用json.net解析文件有更好的方法。有关更多信息,请阅读。中有两个示例说明如何使用。下面是两个示例,都做了一些小的修改,以帮助与代码集成
选项1。通过JsonConvert读取JSON数据
var pathToFile = @"C:\DevelopmentJson\ConsoleApp1\File\my_test.json";
// read file into a string and deserialize JSON to a type
var dataFromJsonConvert = JsonConvert.DeserializeObject<MyData>(File.ReadAllText(pathToFile));
// dataFromJsonConvert now holds your JSON data from file
注意:以下使用语句是必需的
using System;
using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
如果没有实际的json,没有人可以帮助您,请分享它。另一点是,问题标题和实际问题看起来很不一样。您可以发布json数据吗?如果不是太大?或者至少是前几行。你不是在解析文件,而是在解析路径。我如何传递文件?我将很快发布json。json是有效的。我认为传递文件是个问题。当我试图调用导出方法,将dataFromJsonSerializer作为字符串传递时,我遇到了这个错误,无法将“System.Collections.Generic.IEnumerable”转换为“string”。我的json文件是有效的。太大了,不太大
IEnumerable
不适合您。@user2320476您应该在Export
方法中使用我的答案中的一个选项中的代码。我将更新我的答案以进行说明。@user2320476答案更新了一个如何在代码中使用的示例。@Joelius没有看到JSON文件的内容,我们无法确认它是否是正确的类型。这就是为什么我在回答中添加了一条注释,指出类型与JSON内容兼容的假设。
var pathToFile = @"C:\DevelopmentJson\ConsoleApp1\File\my_test.json";
// read file into a string and deserialize JSON to a type
var dataFromJsonConvert = JsonConvert.DeserializeObject<MyData>(File.ReadAllText(pathToFile));
// dataFromJsonConvert now holds your JSON data from file
var pathToFile = @"C:\DevelopmentJson\ConsoleApp1\File\my_test.json";
// deserialize JSON directly from a file
using (StreamReader file = File.OpenText(pathToFile))
{
var serializer = new JsonSerializer();
var dataFromJsonSerializer = (IEnumerable<IEnumerable<string>>)serializer.Deserialize(file, typeof(MyData));
// dataFromJsonSerializer now holds your JSON data from file
}
static void Main(string[] args)
{
var pathToFile = "C:\DevelopmentJson\ConsoleApp1\File\my_test.json";
var fileJsonRaw = File.ReadAllText(pathToFile))
var objReader = new MyReader();
var fileJsonParsed = objReader.Export(fileJsonRaw).ToList();
Console.WriteLine("Hello");
}
public MyData Export(string json)
{
return JsonConvert.DeserializeObject<MyData>(json);
}
public partial class MyData
{
[JsonProperty("UpdatedDay")]
public string UpdatedDay { get; set; }
[JsonProperty("UpdatedUser")]
public string UpdatedUser { get; set; }
[JsonProperty("solution")]
public Solution[] Solution { get; set; }
}
public partial class Solution
{
[JsonProperty("title")]
public string Title { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
[JsonProperty("fields")]
public Field[] Fields { get; set; }
}
public partial class Field
{
[JsonProperty("firstname")]
public string Firstname { get; set; }
[JsonProperty("lastiname", NullValueHandling = NullValueHandling.Ignore)]
public string Lastiname { get; set; }
[JsonProperty("required")]
public bool FieldRequired { get; set; }
[JsonProperty("lastname", NullValueHandling = NullValueHandling.Ignore)]
public string Lastname { get; set; }
}
using System;
using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;