【问题标题】:Unexpected end when reading JSON. Path '', line 1, position 1读取 JSON 时意外结束。路径'',第 1 行,位置 1
【发布时间】:2018-12-09 21:56:46
【问题描述】:

我正在使用配置系统制作 Minecraft 帐户检查器。 (请注意,检查器是用 C# 制作的,我使用 Newtonsoft.json 作为配置系统)。 所以,我做了一个列表:

List<string> config = File.ReadAllLines("config.json").ToList();

我用里面的代码做了一个 Parrallel.ForEach :

Parallel.ForEach(config, things =>
        {
            dynamic configJson = JsonConvert.DeserializeObject(things);

            int threads = (int)configJson.threads;
            string proxiesType = (string)configJson.proxiesType;

            Console.WriteLine(threads + " - " + proxiesType);
        });

config.json 文件非常简单:

{
   "threads": 200,
   "proxiesType": "SOCKS5"
}

但是当我运行项目时,我得到了这个错误:

Newtonsoft.Json.JsonSerializationException : '读取 JSON 时意外结束。路径'',第 1 行,位置 1。'

我只是需要帮助,因为我搜索过但没有一个解决这个问题。

【问题讨论】:

  • 在有问题的标题中后缀[SOLVED] 不好。而是单击以下答案之一上的复选标记 (✓) 将其标记为答案。如果您自己解决了问题,请将解决方案发布为下面的答案,然后单击复选标记 (✓)。

标签: c# json json.net


【解决方案1】:

我不知道你为什么要这样接近它。没有理由使用Parallel.ForEach 来解析 JSON。

您现在正在做的是将 JSON 文件的每一行拉入列表,然后尝试解析每一行。

所以它尝试解析第 1 行,即{{ 不是有效的 JSON 对象。解析失败。

使用File.ReadAllText 将整个文件读入单个字符串,然后解析该字符串。不需要任何形式的循环。

【讨论】:

    【解决方案2】:

    您有两种使用 Json.NET 处理 JSON 文件的方法:

    1. 按照 Daniel 的建议使用 File.ReadAllText()
    string json = File.ReadAllText("config.json"); Config config = JsonConvert.DeserializeObject<Config>(json);
    1. 使用直接在文件上打开的流。方法如下:
    using (StreamReader file = File.OpenText("config.json"))
    {
        JsonSerializer serializer = new JsonSerializer();
        Config config = (Config)serializer.Deserialize(file, typeof(Config));
    }

    【讨论】:

      猜你喜欢
      • 2019-12-31
      • 2021-03-18
      • 2020-01-15
      • 2021-08-28
      • 2015-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多