无法解析 JSON 文件,Progam.cs asp.net 核心中的错误

Posted

技术标签:

【中文标题】无法解析 JSON 文件,Progam.cs asp.net 核心中的错误【英文标题】:Could not parse the JSON file ,Error in Progam.cs asp.net core 【发布时间】:2018-03-06 01:23:04 【问题描述】:

我在使用 ASP.NetCORE 2.0 版本的 program.cs 文件时遇到了一些问题

这是我的代码

     public class Program

    public static void Main(string[] args)
    
        BuildWebHost(args).Run();
    

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseKestrel()
            .UseStartup<Startup>()
            .UseConfiguration(new ConfigurationBuilder().AddCommandLine(args).Build())
            .Build();


当我运行项目时,出现以下错误。

System.FormatException: 'Could not parse the JSON file. Error on line number '0': ''.'

如何解决?

【问题讨论】:

你要解析的 JSON 是什么? 我不知道,我只是想像这样运行项目 .NET 核心和系统抛出异常你有什么解决办法吗? 可能你在 Startup 类中添加了配置文件。看看那里。 一个空文件会出现这个问题,它必须至少包含 。 答案是您的secrets.json 文件一定是完全空的。至少应该有 中的左大括号和右大括号,否则它将引发错误,因为如果为空,它将不是有效的 json 文件。我也浪费了太多时间,但终于弄明白了,感谢上面@FrodeNilsen 评论的评论 【参考方案1】:

我在另一个帖子中遇到了与此类似的问题,并在那里发布了我的解决方案:Application Startup Failure with Json read Error。也贴在这里,以防它消失。


我遇到了同样的问题。就我而言,我已经开始实施应用程序机密,但中途放弃了它。我的 secrets.json 文件保持链接但 JSON 无效。

检查您的.csproj 以查看&lt;UserSecretId&gt; 属性是否设置在&lt;PropertyGroup&gt; 下。如果已设置,BuildWebHost() 将在'%APPDATA%\Microsoft\UserSecrets\secretId' 中查看您的secrets.json 文件,以及您的appsettings.json 文件。任何一个文件中的错误都会导致该方法失败,但它不会告诉您它是哪个文件。

我的解决方案是删除&lt;UserSecretId&gt; 属性或

【讨论】:

多么传奇啊!!!我迁移到 AWS Secret Manager 并清除了我的秘密文件..... 啊,谢谢。我刚刚清除了我的 secrets.json。留下一对花括号就解决了。 太棒了。同样的事情也发生在我身上。 【参考方案2】:

您的appSettings.json 文件(或您正在使用的任何配置)的格式是否正确?如果开头有无效字符,WebHost.CreateDefaultBuilder 将无法正确解析它。当复制/粘贴在文件开头添加空格时,我看到了这个问题。

【讨论】:

我有 appsettings.Test.json 文件,但它是空的。在我将空 添加到 JSON 设置文件后,错误消失了。谢谢!【参考方案3】:

appsettings.json 格式不正确时可能会发生这种情况

就我而言,我有以下配置并收到错误

 
"ConnectionStrings": 
"TransferDBConnection": 
 "Server=INGBTCPIC5DT04D;Database=TransferDB;Trusted_Connection=true;
 ,
  ******
   "Logging": 
   "LogLevel": 
    "Default": "Warning"
   
 ,
 "AllowedHosts": "*"

理想情况下,它应该是一个额外的导致这个问题

 
 "ConnectionStrings": 
 "TransferDBConnection": 
 "Server=INGBTCPIC5DT04D;Database=TransferDB;Trusted_Connection=true;"
 ,
  "Logging": 
  "LogLevel": 
    "Default": "Warning"
  
,
"AllowedHosts": "*"

【讨论】:

【参考方案4】:

同样的问题并通过从*.cproj删除 &lt;UserSecretsId&gt; &lt;/UserSecretsId&gt; 解决。

这是一个错误的用户密码配置

【讨论】:

这对我的问题很有帮助。不知何故,失败的项目的 secrets.json 文件是空白的。我的解决方案是将 添加到我的 secrets.json 文件中。要编辑文件,请在解决方案资源管理器中右键单击项目并选择管理用户机密。【参考方案5】:

我的一个复杂 API 遇到了同样的问题,遗憾的是我浪费了几个小时才找到问题。

首先检查您的appsettings.json 是否正确格式化为标准JSON。

我的问题是我在 appsettings.json 文件中错误地输入了一些字符,像这样(对我来说,'ttings' 字符会导致这个问题)

还要检查您的所有json 文件是否不为空。一个标准的json 至少应该有两个花括号。

【讨论】:

就我而言,我有空的 appsettings.production.json 文件。谢谢。【参考方案6】:

我遇到了这个问题,原因是由于某种原因,Visual Studio 保存的文件带有一些在文本之前的不可见元数据,因此 JSON 阅读器无法解析它。

你需要File -&gt; Save As -&gt; (Choose UTF-8 Without BOM)

【讨论】:

这就是我的解决方案 :) 谢谢【参考方案7】:

我遇到了同样的问题。 我发现这个问题似乎是由我的appsettings.json 文件引起的。 我从另一个地方复制了一个版本来解决这个问题。

【讨论】:

虽然这不是一个答案,但请使用评论部分提出其他或补充问题。谢谢。 @ShanteshwarInde 我不同意。答案解释说,从其他地方复制文件似乎可以解决问题,这是一个有效的答案。 我的 appsettings.json 也有问题。或者更具体地说,使用我的 appsettings.production.json,它覆盖了 appsettings.json,用于我的软件的生产版本。早些时候,我的 appsettings.production.json 有花括号,其中没有任何内容。我不小心删除了那些花括号,以为空文件也可以。它没有。直到部署时我才发现,因为我的 appsettings.development.json did 有正确的内容。经验教训:在覆盖的 appsettings 文件中有空括号。 谢谢杰!我在创建新环境时搞砸了,他们的 appsettings.environmentName.json 文件是空文件。为每个文件添加了花括号,它就像一个魅力。再次感谢您。【参考方案8】:

在我的情况下,我遇到了这个问题,因为我在我的解决方案中添加了用户密码,后来删除了包括 在内的所有内容。请确保文件中的内容采用正确的 JSON 格式。或者,如果不需要文件中的信息,请尝试向文件提供一个空对象 。

【讨论】:

这是我的情况。【参考方案9】:

在 m 的情况下,我在 appsettings.json 中添加了额外的 之前(上方) "ConnectionStrings" :

我从另一个文件中复制了这个,并假设 "ConnectionStrings" : 必须在花括号内

之前

...
,
  //<-- this one the culprit
    "ConnectionStrings": 
      "Dapper": "Server=.;Database=Dapper;Trusted_Connection=True;"
    ,

之后

...
,
    "ConnectionStrings": 
      "Dapper": "Server=.;Database=Dapper;Trusted_Connection=True;"
    ,

【讨论】:

【参考方案10】:

检查您的 json 中是否没有任何隐藏的空格或制表符。 你可以使用https://jsonlint.com/来验证你的json格式。

【讨论】:

【参考方案11】:

检查您的 appsettings.json 文件。这个问题是因为您的文件没有逗号、方括号、大括号或其他标点符号。

【讨论】:

【参考方案12】:

如果您的 appsetting.json 格式不正确,可能会出现此问题。

在我的情况下,我的 appsettings.json 中有一个不需要的字符

如果你在 sdk 部分仔细看,我有一个额外的 l 只是导致异常。


    "AppSettings": 
        "DefaultConnection": "ProdConnection",
        "DoGoogleAnalytics": "false"
    , 
    "sdk": l
        "version": "1.0.0"
    ,
    "ConnectionStrings": 
        "LocalConnection": "data source=DATA_SERVER\\SQLEXPRESS,12345;initial catalog=DATABASE_NAME;persist security info=True;user id=db_user_id;password=db_password;MultipleActiveResultSets=true",
    

【讨论】:

【参考方案13】:

只需将 ConnectionStrings 放在 appsetting 文件中,然后运行迁移命令。

【讨论】:

请提供高质量的答案,直到您可以编写 cmets。这还不够回答。【参考方案14】:

对我来说,appsettings.json 中缺少逗号

【讨论】:

以上是关于无法解析 JSON 文件,Progam.cs asp.net 核心中的错误的主要内容,如果未能解决你的问题,请参考以下文章

快速解析 Json 数据

python操作:json文件中存在NumberInt(0),没有引号,无法解析?

python3.0怎么用json从文件解析

无法解析 uitableview 中的 json 文件

无法快速从 JSON 中正确提取数据

无法在 Django 1.8 中解析静态 JSON 文件