使用ASP.NET Core反序列化appsettings.json

时间:2017-06-07 18:46:01

标签: c# asp.net json asp.net-core

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

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

{
  "ConnectionStrings": {
    "IdentityServer4": "server=(localdb)\\mssqllocaldb;database=IdentityServer4.Quickstart.EntityFramework;trusted_connection=yes"
  }
}

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

dynamic result = JsonConvert.DeserializeObject(jsonString);

当该行执行时,我收到以下错误:

"Unexpected character encountered while parsing value: . Path '', line 0, position 0."

1 个答案:

答案 0 :(得分:0)

字符串的开头似乎有一个Byte Order Mark

要剥离BOM,请参阅this question的答案。

但是,最好不要将它包含在字符串中。如果您有一个包含BOM的字节数组并执行:

var jsonString = Encoding.UTF8.GetString(byteArray);

然后将包括BOM。但如果您使用StreamReader读取二进制数据,则将处理并删除BOM:

var jsonString = new StreamReader(new MemoryStream(byteArray)).ReadToEnd();

(如果您愿意,可以添加using语句,但实际上并不需要处理MemoryStream。)

或者,按照this answer(对于XML)和this one(对于JSON的同时解压缩和反序列化)的行,一次流,解密和反序列化。