Ayush
Ayush

Reputation: 42450

How should a JSON response be formatted?

I have a REST service that returns a list of objects. Each object contains objectcode and objectname.

This is my first time building a REST service, so I'm not sure how to format the response.

Should it be:

{
    "objects": {
        "count": 2,
        "object": [
            {
                "objectcode": "1",
                "objectname": "foo"
            },
            {
                "objectcode": "2",
                "objectname": "bar"
            },
            ...more objects
        ]
    }
}

OR

 [
    {
        "objectcode": "1",
        "objectname": "foo"
    },
    {
        "objectcode": "2",
        "objectname": "bar"
    },
    ...more objects
]

I realize this might be a little subjective, but which would be easier to consume? I would also need to support XML formatted response later.

Upvotes: 3

Views: 2113

Answers (4)

Femaref
Femaref

Reputation: 61437

They are the same to consume, as a library handles both just fine. The first one has an advantage over the second though: You will be able to expand the response to include other information additional to the objects (for example, categories) without breaking existing code.

Something like

{
    "objects": {
        "count": 2,
        "object": [
            {
                "objectcode": "1",
                "objectname": "foo"
            },
            {
                "objectcode": "2",
                "objectname": "bar"
            },
            ...more objects
        ]
    }

 "categories": {
  "count": 2,
  "category" : [
     { "name": "some category"}
  ]
  }
}

Additionally, the json shouldn't be formatted in any way, so remove whitespace, linebreaks etc. Also, the count isn't really necessary, as it will be saved while parsing the objects themselves.

Upvotes: 3

Sergii Kudriavtsev
Sergii Kudriavtsev

Reputation: 10512

It's not only the question of personal preference; it's also the question fo your requirements. For example, if I was in the same situation and I did need object count on client side then I'd go with first approach otherwise I will choose the second one.

Also please note that "classic" REST server mostly will work a bit different way. If some REST function is to return a list of objects then it should return only a list of URLs to those objects. The URLs should be pointing to details endpoints - so by querying each endpoint you may get details on specific single object.

Upvotes: 1

JuSchz
JuSchz

Reputation: 1198

I often see the first one. Sometimes it's easier to manipulate data to have meta-data. For exemple google API use first one : http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true

Upvotes: 2

user647772
user647772

Reputation:

As a client I would prefer the second format. If the first format only includes the number of "objects", this is redundant information.

Upvotes: -1

Related Questions