C# 将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

我正在学习如何使用Newtonsoft.json处理json数据

我将有效的json文件存储在控制台应用程序的一个文件夹中,并调用 将处理json文件的方法

        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;