1

The problem I am facing is that I am getting 0's for the values I ask for in the JSON.

I recently asked a question here about getting specific values from a JSON array response that come from an API.

Now I have a new JSON response from a different route and in there I want one values and its called EntityId its places in a block of Entity See the code for more details, I would like to grab that from this response and place them in a list or Array because it tells me who submitted the assignment in D2L.

UPDATE- After getting comments from a user I used JSON to C# tool to create the full class with all the values but I still get the values as 0,0,0,0.

Right now I am getting 0,0,0,0 values and not getting the actual values if it's possible I would like to grab the whole block on Entity.

JSON

[
  {
    "Entity": {
      "DisplayName": "FullName",
      "EntityId": 123,
      "EntityType": "User",
      "Active": true
    },
    "Status": 1,
    "Feedback": null,
    "Submissions": [
      {
        "Id": 27,
        "SubmittedBy": {
          "Identifier": "123",
          "DisplayName": "FullName"
        },
        "SubmissionDate": "2019-08-01T15:25:04.130Z",
        "Comment": {
          "Text": "",
          "Html": ""
        },
        "Files": [
          {
            "IsRead": false,
            "IsFlagged": false,
            "IsDeleted": false,
            "FileId": 1245,
            "FileName": "1.2.10.png",
            "Size": 144407
          },
          {
            "IsRead": false,
            "IsFlagged": false,
            "IsDeleted": false,
            "FileId": 292,
            "FileName": "1.3.8.png",
            "Size": 127869
          }
        ]
      }
    ],
    "CompletionDate": "2019-08-01T15:25:04.130Z"
  },
  {
    "Entity": {
      "DisplayName": "FullName",
      "EntityId": 123,
      "EntityType": "User",
      "Active": true
    },
    "Status": 1,
    "Feedback": null,
    "Submissions": [
      {
        "Id": 41,
        "SubmittedBy": {
          "Identifier": "123",
          "DisplayName": "FullName"
        },
        "SubmissionDate": "2019-08-03T03:31:43.807Z",
        "Comment": {
          "Text": " \nAlex",
          "Html": "<p></p>\n<p>Alex</p>"
        },
        "Files": [
          {
            "IsRead": false,
            "IsFlagged": false,
            "IsDeleted": false,
            "FileId": 313,
            "FileName": "Capture 1.2.10 Questions.PNG",
            "Size": 97722
          }
        ]
      }
    ],
    "CompletionDate": "2019-08-03T03:31:43.807Z"
  }
]

Classes:

public class Entity
{
    public string DisplayName { get; set; }
    public int EntityId { get; set; }
    public string EntityType { get; set; }
    public bool Active { get; set; }
}

public class SubmittedBy
{
    public string Identifier { get; set; }
    public string DisplayName { get; set; }
}

public class Comment
{
    public string Text { get; set; }
    public string Html { get; set; }
}

public class File
{
    public bool IsRead { get; set; }
    public bool IsFlagged { get; set; }
    public bool IsDeleted { get; set; }
    public int FileId { get; set; }
    public string FileName { get; set; }
    public int Size { get; set; }
}

public class Submission
{
    public int Id { get; set; }
    public SubmittedBy SubmittedBy { get; set; }
    public DateTime SubmissionDate { get; set; }
    public Comment Comment { get; set; }
    public IList<File> Files { get; set; }
}

public class Example
{
    public Entity Entity { get; set; }
    public int Status { get; set; }
    public object Feedback { get; set; }
    public IList<Submission> Submissions { get; set; }
    public DateTime CompletionDate { get; set; }
}

Code:

var request = new RestRequest(string.Format(Link));
request.Method = Method.GET;

authenticator.Authenticate(client, request);

var response = client.Execute(request);

var thisasa = JsonConvert.DeserializeObject<List<Example>> 
   (response.Content).Select(
    o => o.Identifier).ToList();
Brian Rogers
  • 125,747
  • 31
  • 299
  • 300
Maxi
  • 109
  • 1
  • 11
  • 2
    Your deserialization code seems to work fine, not sure what your problem is. But `.Select(o => o.Identifier)` won't compile, what you need to do is `.Select(o => o.Entity.EntityId)`. Demo: https://dotnetfiddle.net/0U2mhc. Does this answer your question? – dbc Sep 09 '19 at 19:43
  • @dbc Yes that was the issue, Thanks a lot! – Maxi Sep 09 '19 at 19:49
  • @dbc if you post an answer I will be able to give you credit for the answer so I think you should post an answer so I could mark is as accepted, it's only fair to give you credit for all your help – Maxi Sep 09 '19 at 20:12

1 Answers1

0

The Example data model shown in your question already can be used to successfully deserialize the JSON shown. All that's left is to pick out the Entity.EntityId property via a Select:

var thisasa = JsonConvert.DeserializeObject<List<Example>>(response.Content)
    .Select(o => o.Entity.EntityId)
    .ToList();

Demo fiddle #1 here.

Incidentally, if you only need Entity.EntityId you could simplify your data model as follows:

public class Entity
{
    public int EntityId { get; set; }
}

public class Example
{
    public Entity Entity { get; set; }
}

Demo fiddle #2 here.

(As an aside, since your Example class corresponds to the documented object Dropbox.EntityDropbox, you might want to rename your type to EntityDropbox for clarity.)

dbc
  • 104,963
  • 20
  • 228
  • 340