Villem
Villem

Reputation: 13

Add object to array in JSON

I am trying to add an object in an array to an item in a JSON object.

The result I am looking for is:

{ "AvailableFacets":[ "color", "sheenlevel" ], 
  "Selections":[ 
      { "Facet":"color", "Value":"red" }, 
      { "Facet":"color", "Value":"blue" } 
  ]
}

but I get the error "TypeError: myJsonObject.Selection.push is not a function" when doing the following:

var testJson = function () {
    var myJsonObject = $.parseJSON('{"AvailableFacets":["color", "sheenlevel"]}');
    myJsonObject.Selection = "[]";
    var newObject1 = $.parseJSON('{"Facet":"color", "Value":"red"}');
    var newObject2 = $.parseJSON('{"Facet":"color", "Value":"blue"}');
    myJsonObject.Selection.push(newObject1);

    return myJsonObject;
};

What am I doing wrong?

Upvotes: 0

Views: 401

Answers (1)

Jason Sperske
Jason Sperske

Reputation: 30426

"[]" !== []. Did that help? You are using the wrong types. Also you are looking for an output with "Selections" but you are attempting to define "Selection", but I assume that is a typo. This should work:

myJsonObject.Selection = [{"Facet":"color", "Value":"red"},{"Facet":"color", "Value":"blue"}];

But if you wanted to parse a string of JSON as JSON then just change

myJsonObject.Selection = "[]";

to:

myJsonObject.Selection = [];

Upvotes: 2

Related Questions