SpringLearner
SpringLearner

Reputation: 13844

How to loop a JSON

I am getting JSON via ajax like this

{
    "questionTypes": [
        {
            "id": 1,
            "name": "text",
            "deleted": false,
            "version": 0
        },
        {
            "id": 2,
            "name": "rating",
            "deleted": false,
            "version": 0
        },
        {
            "id": 3,
            "name": "boolean",
            "deleted": false,
            "version": 0
        },
        {
            "id": 4,
            "name": "option",
            "deleted": false,
            "version": 0
        }
    ],
    "data": [
        {
            "id": 1,
            "category": "default",
            "question": "Staff Courtesy",
            "deleted": false,
            "version": 0
        },
        {
            "id": 2,
            "category": "default",
            "question": "Staff Response",
            "deleted": false,
            "version": 0
        },
        {
            "id": 3,
            "category": "default",
            "question": "Check In",
            "deleted": false,
            "version": 0
        },
        {
            "id": 4,
            "category": "default",
            "question": "Check Out",
            "deleted": false,
            "version": 0
        },
        {
            "id": 5,
            "category": "default",
            "question": "Travel Desk",
            "deleted": false,
            "version": 0
        },
        {
            "id": 6,
            "category": "default",
            "question": "Door Man",
            "deleted": false,
            "version": 0
        },
        {
            "id": 14,
            "category": "client",
            "question": "test question",
            "deleted": false,
            "version": 0
        },
        {
            "id": 15,
            "category": "client",
            "question": "test1",
            "deleted": false,
            "version": 0
        },
        {
            "id": 16,
            "category": "client",
            "question": "test2",
            "deleted": false,
            "version": 0
        },
        {
            "id": 17,
            "category": "client",
            "question": "test2",
            "deleted": false,
            "version": 0
        },
        {
            "id": 21,
            "category": "client",
            "question": "ggggg",
            "deleted": false,
            "version": 0
        }
    ]
}

I want to get the name fields from

"questionTypes": [
    {
        "id": 1,
        "name": "text",
        "deleted": false,
        "version": 0
    },
    {
        "id": 2,
        "name": "rating",
        "deleted": false,
        "version": 0
    },
    {
        "id": 3,
        "name": "boolean",
        "deleted": false,
        "version": 0
    },
    {
        "id": 4,
        "name": "option",
        "deleted": false,
        "version": 0
    }
],

$.each(data1.data.questionTypes, function(index, currPat) {

                   console.log(currPat.name); }

but it did not work ,I get undefined in console.Can any body tell me how to loop exactly

Upvotes: 0

Views: 136

Answers (5)

Rupam Datta
Rupam Datta

Reputation: 1879

Try this

$.each(json.questionTypes, function (index, currPat) {
    div=$('<div/>').text(currPat.name);
    $('#jsoncontainter').append(div);
});

http://jsfiddle.net/ardeezstyle/497Tx/1/

For your second part of the problem, here is a solution.

$.each(json.data, function (index, currQuest) {
    question=$('<div/>',{'class':'question'}).text(currQuest.question);
    answer=$('<div/>',{'class':'answer'});
    dropdown=$('<select/>');
    $.each(json.questionTypes, function (index, currPat) {
        option=$('<option/>').text(currPat.name).appendTo(dropdown);
    });
    answer.append(dropdown);
    $('#jsoncontainter').append(question).append(answer);
});

Fiddle

Upvotes: 0

Bhavik
Bhavik

Reputation: 4904

Demo Fiddle

jQuery

$.each(json.data, function (index, currPat) {
    $(tbody).append('<tr><td><b>Question from data: ' + currPat.question + '</b></td><td><b>Names from questionTypes</b><select class="qType"></select></td></tr>');
});

var select = $('.qType');
$(json.questionTypes).each(function (index, currPat) {
    $(select).append('<option>' + currPat.name + '</option>');
});  

You must loop twice: Once for getting the question and then for getting name.

Upvotes: 2

Runcorn
Runcorn

Reputation: 5224

OK, you can do this ,

$(jsonObject.questionTypes).each(function(i,value){
     //get value here using value.name
     alert(value.name);
 });

And the problem was you were actually extracting questionTypes from datawhich is non existent there.

Upvotes: 2

JegsVala
JegsVala

Reputation: 1857

in your code I don't see any username properties, try to use this code.

$.each(data1.data.questionTypes, function(index, currPat) {

               console.log(currPat.name); }

Upvotes: 0

Balachandran
Balachandran

Reputation: 9637

Fiddle Demo

data has no questionTypes

$.each(data1.questionTypes, function(index, currPat) {

                      alert(currPat.name);


    });

Upvotes: 0

Related Questions