8

I am using ajax to get a small set of data back from the server which returns JSON data with the following format:

{
    "data": [
        {
            "id": "1",
            "value": "One"
        },
        {
            "id": "2",
            "value": "Two"
        },
        {
            "id": "3",
            "value": "Three"
        }
    ]
}

On the client side, this is assigned to a variable named response. I use response.data to get the contents.

The question is, is there an easier way to get the value without doing a loop? I'm kinda looking for something like this response[id==2].value which should give me "Two".

I'm open for any suggestions if this is not possible.

3
  • duplicate? stackoverflow.com/questions/8481380/… Commented Aug 19, 2013 at 5:05
  • 1
    I understand your question but in your case this can be done.. response.data[2-1].value Commented Aug 19, 2013 at 5:09
  • http://jsfiddle.net/uHbZt/8/ This? Commented Aug 19, 2013 at 5:17

2 Answers 2

7

You could take a functional approach and use the Array.filter method:

var matchingResults = JSON['data'].filter(function(x){ return x.id == 2; });
// procede to use matching elements...
Sign up to request clarification or add additional context in comments.

1 Comment

Not at all! You made my answer better for me.
2

If you parse it into a javascript object using something like jQuery's json parse method, you could just reference the various items in the array like a normal javascript array.

Do it like this:

var dataArray = $.parseJSON(myJson).data;

var theFirstData = dataArray[0]; //get the data with id "1"

Alternately, if you don't want to use jQuery, you can use JSON.parse(jsonToParse). Here're the docs for that method.

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.