我正在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."
答案 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的同时解压缩和反序列化)的行,一次流,解密和反序列化。