2014-07-08 68 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

相關問題