2

I am trying to convert a json string to an object using Newtonsoft.json, but I am having some problems with the following conversion. I wonder if some one can explain this. thanks.

AddFaceResponse ir = JsonConvert.DeserializeObject<AddFaceResponse>(responseContentStr);

this is the json string responseContentStr

[{
    "faceId": "1fe48282-a3b0-47d1-8fa8-67c4fac3d984",
    "faceRectangle": {
        "top": 80,
        "left": 50,
        "width": 147,
        "height": 147
    }
}]

This is my model object.

public class AddFaceResponse
    {
        public class Face
        {
            public class FaceRectangle
            {
                public int top, left, width, height;
                public FaceRectangle(int t, int l, int w, int h)
                {
                    top = t;
                    left = l;
                    width = w;
                    height = h;
                }
            }
            public string faceId;
            public FaceRectangle faceRectangle;
            public Face(string id, FaceRectangle fac)
            {
                faceId = id;
                faceRectangle = fac;
            }
        }

        Face[] faces;
        public AddFaceResponse(Face[] f)
        {
            faces = f;
        }
    }

this is the error I am getting from visual studio.

Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'App2.AddFaceResponse' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly

2
  • Where is the definition of the IdentifyResponse class. Commented Aug 14, 2017 at 20:23
  • sorry I copied the wrong line of code. I intend to convert the string into AddFaceResponse. I just update it. @TravisJ Commented Aug 14, 2017 at 20:28

2 Answers 2

5

You are deserializing an array into an object. You could get it to work with;

var faces = JsonConvert.DeserializeObject<Face[]>(responseContentStr);

Or wrap your JSON string with another pair of accolades { }, and add a property;

{"faces":[.. your JSON string ..]}
Sign up to request clarification or add additional context in comments.

1 Comment

Sorry for the confusion, I copied the wrong line of code. I am trying to convert it into AddFaceResponse.
2

Improving the answer of Kolky, you can receive the deserializated data to an array

    Face[] faces = JsonConvert.DeserializeObject<Face[]>(responseContentStr);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.