C# 使用ASP.NET核心反序列化appsettings.json

C# 使用ASP.NET核心反序列化appsettings.json,c#,asp.net,json,asp.net-core,C#,Asp.net,Json,Asp.net Core,我正在ASP.NET应用程序中对appsettings.json文件进行加密/解密 解密后,我的文件被正确解密为以下字符串:  现在,我想将该结果转换为一个对象,我尝试使用以下代码行执行此操作: dynamic result = JsonConvert.DeserializeObject(jsonString); 当该行执行时,我收到以下错误: "Unexpected character encountered while parsing value: . Path '', line 0,

我正在ASP.NET应用程序中对appsettings.json文件进行加密/解密

解密后,我的文件被正确解密为以下字符串:



现在,我想将该结果转换为一个对象,我尝试使用以下代码行执行此操作:

dynamic result = JsonConvert.DeserializeObject(jsonString);
当该行执行时,我收到以下错误:

"Unexpected character encountered while parsing value: . Path '', line 0, position 0."
似乎在字符串的开头有一个字母

要删除BOM表,请参见的答案

但是,最好不要首先将其包含在字符串中。如果您有一个包含BOM表的字节数组,请执行以下操作:

var jsonString = Encoding.UTF8.GetString(byteArray);
然后将包括BOM表。但是,如果您使用
StreamReader
读取二进制数据,则BOM表将被处理并删除:

var jsonString = new StreamReader(new MemoryStream(byteArray)).ReadToEnd();
(如果愿意,可以使用语句添加
,尽管实际上不需要处理
MemoryStream


或者,按照(对于XML)和(对于JSON的同时解压缩和反序列化)的行同时进行流式传输、解密和反序列化。

您是否记录了jsonString变量以验证它是否包含有效的JSON?字符串开头可能有一个。如果是这样的话,请参阅,例如,有关如何解决问题的建议。@dbc,您完全正确。执行
jsonString=jsonString.Trim(新字符[]{'\uFEFF','\u200B'})解决了这个问题。请提交答案,以便我可以接受。
var jsonString = new StreamReader(new MemoryStream(byteArray)).ReadToEnd();