1

I have a serialized JSON string serializedClaims -

var claims = new List<Claim>();

claims.Add(new Claim("MakerId", "939393", ClaimValueTypes.String));
claims.Add(new Claim(ClaimTypes.DateOfBirth, "1956-03-08", ClaimValueTypes.Date));

var serializedClaims = JsonConvert.SerializeObject(claims); 

Now I want to deserialize serializedClaims back to a List<Claim>.

How to do that?

4
  • 1
    Does JsonConvert.DeserializeObject<List<Claim>>(serializedClaims); not work? Commented Oct 19, 2016 at 4:58
  • No it does not , errors out "Unable to find a constructor for System.Security.Claims.Claim" Commented Oct 19, 2016 at 5:44
  • @GilliVilla You have to add Constructor to your Claim class. Commented Oct 19, 2016 at 6:54
  • Specifically, you have to add a default constructor, so public Claim() {...}. This is because under the covers, JsonConvert is iterating over the JSON objects in serializedClaims, and for each, creating a new Claim using the default constructor, and using reflection to populate properties of that object using similarly named entries in the JSON object. Commented Oct 21, 2016 at 4:27

3 Answers 3

1

You can do by specified the List<Claim> type in conversion

var dserializedClaims = JsonConvert.DeserializeObject<List<Claim>>(serializedClaims); 
Sign up to request clarification or add additional context in comments.

2 Comments

It should be JsonConvert.DeserializeObject<List<Claim>>(....
Now it's just like Nihal Rp's answer.
0

You could do

List<Claim> deserializedClaims = JsonConvert.DeserializeObject<List<Claim>>(serializedClaims);

1 Comment

No. Errors out.
0

You can DeserializeObject using JsonConvert and you also specified its settings for format of json data.like

      var settings = new JsonSerializerSettings
        {
            ContractResolver = new CamelCasePropertyNamesContractResolver(),
            NullValueHandling = NullValueHandling.Ignore,
            DateParseHandling = DateParseHandling.None
        };
       List<Claim> claims =JsonConvert.DeserializeObject<List<Claim>>(serializedClaims, settings);

using this setting you can ignore the null value and provide date parse handling

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.