2014-07-08 27 views
-1

我想序列化一个角色列表中的角色返回到角客户端的标记。列表<string>序列化为字符串,而不是与json.net json数组

在C#中的代码是:

List<Claim> roles = oAuthIdentity.Claims.Where(c => c.Type == ClaimTypes.Role).ToList(); 
var serialRoles = Newtonsoft.Json.JsonConvert.SerializeObject(roles.Select(x => x.Value)); 
AuthenticationProperties properties = CreateProperties(user.UserName, serialRoles); 

CreateProperties方法:

public static AuthenticationProperties CreateProperties(string userName, string roles) 
    { 
     IDictionary<string, string> data = new Dictionary<string, string> 
     { 
      { "userName", userName }, 
      { "roles", roles } 
     }; 
     return new AuthenticationProperties(data); 
    } 

我的问题是我想产生类似:

{ 
.... 
"roles": ["Administrator","Sales"], 
.... 
} 

,但我将角色作为字符串接收而不是数组:

{ 
.... 
"roles":"[\"Administrator\",\"Sales\"]", 
.... 
} 

有什么想法吗? Regards

+0

你是否会再次序列化'AuthenticationProperties'? –

+0

你如何生成最终的JSON?你在序列化什么对象? –

+0

这不是代码的任何其他部分的问题。它不是令牌传递的问题,因为问题出现在SerializeObject调用中[var serialRoles = Newtonsoft.Json.JsonConvert.SerializeObject(roles.Select(x => x.Value ));]。可以从json.net的一些选项?它是json.net数组的扁平化? –

回答

0

我已经解决了这个问题。 我不确定这是否是正确的答案。

它在客户端用JSON.parse()解决。然后,字符串中的json格式很好。 Regards

相关问题