微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JsonReaderException:在C#中解析时遇到意外字符

如何解决JsonReaderException:在C#中解析时遇到意外字符

所以我正在尝试解码我​​的jwt令牌。我刚刚向它添加一个名为“ userGroupList”的新对象。基本上,这是一个使用JsonConvert.SerializeObject转换为字符串的类。问题是当我现在尝试解码我​​的jwt令牌时,出现此错误

Newtonsoft.Json.JsonReaderException:'解析值时遇到意外字符:[。路径“ userGroupList”,第1行,

这是创建jwt令牌的方式:

JsonConvert.SerializeObject(Logics.GetJwtToken(new JwtModel { UserId = user.UserId,UserName = user.UserName,Rank = user.Rank,UserGroupList = JsonConvert.SerializeObject(user.UserGroups)}));

这是代码

public static JwtModel ValidateJwtTokenWithResult(string token)
{
    try
    {
        string[] parts = token.Split('.');
        string payload = parts[0] + "." + parts[1];
        string hash = parts[2];
        if (ConfirmToken(payload,hash,"secretthing"))
        {
            JwtModel basejwt = JsonConvert.DeserializeObject<JwtModel>(Base64UrlEncoder.Decode(parts[1]));
            return basejwt;
        }
        return null;
    }
    catch
    {
        return null;
    }
}

public class JwtModel
{
    public int UserId { get; set; }
    public string UserName { get; set; }
    public string Rank { get; set; }
    public string UserGroupList { get; set; }
}

这是我要反序列化的令牌:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI0IiwidXNlck5hbWUiOiJSYXltb25kIEZ1bmciLCJyYW5rIjoiTWFuYWdlciIsInVzZXJHcm91cExpc3QiOlt7IklkIjoxLCJOYW1lIjoiQ29udGFjdHMifSx7IklkIjoyLCJOYW1lIjoiRnVuZHMifSx7IklkIjozLCJOYW1lIjoiQ29tcGxpYW5jZSJ9XX0.Aq6UQJkBslh10Fxkr8MZjuxgqHZxmpWv295kqpG8wo8 =

翻译为:

{
    "userId": "2","userName": "John Smith","rank": "Manager","userGroupList": [
        {
            "Id": 1,"Name": "Contacts"
        },{
            "Id": 2,"Name": "Funds"
        },{
            "Id": 3,"Name": "Compliance"
        }
    ]
}

我对C#还是很陌生。我在做什么错了?

解决方法

更改

public string UserGroupList { get; set; }

public IList<UserGroup> UserGroupList { get; set; }

然后为UserGroup

创建类
class UserGroup {
    public int Id {get; set;}
    public string Name {get; set;}
}

UserId也看起来像字符串,而不是整数

public int UserId { get; set; }

public string UserId { get; set; }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。