【问题标题】:How to deserialize JSON inside a custom claim (from Auth0)?如何在自定义声明中反序列化 JSON(来自 Auth0)?
【发布时间】:2016-03-27 14:26:31
【问题描述】:

我正在将 Auth0 用于我正在使用 ASP.NET Core 1.0 编写的新应用程序。到目前为止它工作得很好,但我遇到了一些让我感到困惑的事情。

当用户登录时,Auth0 会将声明传递回我的应用程序。 Auth0 能够向用户添加自定义数据,它以 JSON 格式存储并作为声明列表出现。

其中一个声明如下所示:

Type "app_metadata"
Value "\"IsPublisherFor\":[\"p56\",\"p124\",\"p258\"]"
ValueType "JSON"

我的问题是,我如何将索赔价值转化为我可以使用的东西?例如,能够做类似IsPublisherFor.Contains("p56");

我试图将值传递给NewtonSoft.Json.JsonConvert.DeserializeObject(value),但它会引发异常。 JsonReaderException: Additional text encountered after finished reading JSON content

有什么方法可以干净地转换吗?

【问题讨论】:

    标签: c# asp.net json claims-based-identity


    【解决方案1】:

    您可能需要将 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; }
    }
    

    【讨论】:

    • 效果很好,即使使用 NewtonSoft。谢谢!
    猜你喜欢
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 2020-12-17
    • 2011-04-12
    • 2013-01-18
    相关资源
    最近更新 更多