我正在将 Auth0 用于我正在使用 ASP.NET Core 1.0 编写的新应用程序。到目前为止,它运行得很好,但我遇到了一些由于某种原因而困扰我的事情。
当用户登录时,Auth0 会将声明传递回我的应用程序。 Auth0 能够向用户添加自定义数据,它以 JSON 格式存储并作为声明列表出现。
其中一个声明看起来像这样:
Type "app_metadata"
Value "\"IsPublisherFor\":[\"p56\",\"p124\",\"p258\"]"
ValueType "JSON"
我的问题是,如何将该 claim 值(value)转换为我可以使用的东西?例如,能够执行诸如 IsPublisherFor.Contains("p56");
我尝试将值传递给 NewtonSoft.Json.JsonConvert.DeserializeObject(value)
但它引发了异常。 JsonReaderException:读取完 JSON 内容后遇到其他文本
有什么方法可以干净地转换它吗?
最佳答案
您可能需要将 JSON 字符串括在大括号中。您通常需要一个顶级数组或对象才能具有有效的 JSON。不知道 NewtonSoft,但使用 JavascriptSerializer,这有效:
var json = "{\"IsPublisherFor\":[\"p56\",\"p124\",\"p258\"]}";
var serializer = new JavaScriptSerializer();
stuff obj = serializer.Deserialize<stuff>(json);
定义以下类来接收数据:
public class stuff
{
public string[] IsPublisherFor { get; set; }
}
关于c# - 如何在自定义声明(来自 Auth0)中反序列化 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36248458/