Question

I have the following code and json:

public class Labels
{
    public Labels()
    {}

    public Label[] Label {get;set;}
}

public class Label
{
    public Label()
    { }
    public string Name { get; set; }
    public int TorrentsInLabel { get; set; }
}

//...
Labels o = JsonConvert.DeserializeObject<Labels>(json);
//...


{"label": 
[
  ["seq1",1]
  ,["seq2",2]
]}

I would like this array ["seq1","1"] to deserialize into Label object. What am I missing? Some attributes?

When I run I get exception: Expected a JsonArrayContract for type 'test_JSONNET.Label', got 'Newtonsoft.Json.Serialization.JsonObjectContract'.

tnx

gg

Was it helpful?

Solution

By default a class serializes to a JSON object where the properties on the class become properties on the JSON object.

{
    Name: "seq",
    TorrentsInLabel: 1
}

You are trying to serialize it to an array which isn't how the Json.NET serializer works by default.

To get what you want you should create a JsonConverter and read and write the JSON for Label manually to be what you want it to be (an array).

OTHER TIPS

How can JsonConvert know that "seq1" corresponds to name and "1" corresponds to the TorrentsInLabel? Please have a look at JsonObjectAttribute, JsonPropertyAttribute, JsonArrayAttribute

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top