475

I have an Array var cars = [2,3,..] which holds a few integers. I've added a few values to the array, but I now need to send this array to a page via jQuery's .get method. How can I convert it to a JSON object for sending?

3
  • Just double-checking: is the array you want to send to the page a JavaScript array or is it on the server? Commented Feb 19, 2010 at 10:22
  • it's a Javascript array, I will be sending it to a Python script and Python will use the JSON string and work with that. Commented Feb 19, 2010 at 10:24
  • stackoverflow.com/questions/2295496/convert-array-to-json/… Commented Mar 17, 2022 at 13:36

12 Answers 12

804

Script for backward-compatibility: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

And call:

var myJsonString = JSON.stringify(yourArray);

Note: The JSON object is now part of most modern web browsers (IE 8 & above). See caniuse for full listing. Credit goes to: @Spudley for his comment below

Sign up to request clarification or add additional context in comments.

10 Comments

This works, does jQuery have a function like this? I'd prefer not to attach another js file if jQuery has a function already.
jQuery has the implementation of JSON.parse in 1.4.1, but not JSON.stringify... If you minifiy json2.js its <3k I think.
Yeah I was suprised jQuery didn't have this built in too
for anyone still reading this answer, it's worth pointing out that all modern browsers include the JSON object as standard, which means that you don't need this script unless you're planning to support older browsers like IE7 or Firefox 3.0. See CanIUse for the support chart.
It's worth pointing out you can do this in a browser console: var a = [paste]; JSON.stringify(a)
|
77

I made it that way:

if I have:

var jsonArg1 = new Object();
    jsonArg1.name = 'calc this';
    jsonArg1.value = 3.1415;
var jsonArg2 = new Object();
    jsonArg2.name = 'calc this again';
    jsonArg2.value = 2.73;

var pluginArrayArg = new Array();
    pluginArrayArg.push(jsonArg1);
    pluginArrayArg.push(jsonArg2);

to convert pluginArrayArg (which is pure javascript array) into JSON array:

var jsonArray = JSON.parse(JSON.stringify(pluginArrayArg))

2 Comments

JSON.parse() is not needed.
65

Wow, seems it got a lot easier nowadays... 3 ways you can do it:

json = { ...array };

json = Object.assign({}, array);

json = array.reduce((json, value, key) => { json[key] = value; return json; }, {});

2 Comments

jsonString = JSON.stringify({ ...array })
33

What do you want ?

If you want json String

var JsonString = JSON.stringify(JsArray);

If you want json Object

var JsonObject = JSON.parse(JSON.stringify(JsArray));

More details!

Using JSON.stringify(), we convert the JavaScript array to Json string. And using JSON.parse(), we convert Json string to a Json object.

1 Comment

the modern answer
14

One other way could be this:

        var json_arr = {};
        json_arr["name1"] = "value1";
        json_arr["name2"] = "value2";
        json_arr["name3"] = "value3";

        var json_string = JSON.stringify(json_arr);

1 Comment

json_arr in your code is no array but an object.
12

I decided to use the json2 library and I got an error about “cyclic data structures”.

I got it solved by telling json2 how to convert my complex object. Not only it works now but also I have included only the fields I need. Here is how I did it:

OBJ.prototype.toJSON = function (key) {
       var returnObj = new Object();
       returnObj.devid = this.devid;
       returnObj.name = this.name;
       returnObj.speed = this.speed;
       returnObj.status = this.status;
       return returnObj;
   }

Comments

11

Or try defining the array as an object. (var cars = {};) Then there is no need to convert to json. This might not be practical in your example but worked well for me.

Comments

11

because my array was like below: and I used .push function to create it dynamically

my_array = ["234", "23423"];

The only way I converted my array into json is

json = Object.assign({}, my_array);

1 Comment

That works as expected. Thank you
4

Shortest

To generate valid json from array of integers use

let json = `[${cars}]`

for more general arrays use JSON.stringify(cars) (for object with circular references use this)

let cars = [1,2,3]; cars.push(4,5,6);

let json = `[${cars}]`;

console.log(json);
console.log(JSON.parse(json)); // json validation

Comments

3

If you have only 1 object like the one you asked, the following will work.

var x = [{'a':'b'}];
var b= JSON.stringify(x);
var c = b.substring(1,b.length-1);
JSON.parse(c); 

Comments

2

You can convert an array to JSON using the Object.assign function. The main issue that I hit with that is that Javascript arrays have a zero based integer key, which in turn allows to access the data in the array.

let fruits = ['Apple', 'Banana']
document.write(fruits[0])

Returns:

Apple

When you convert the array to JSON, you get

{"0": "Apple", "1: "Banana"}

JSON objects on the contrary usually contain arbitrary keys, such as:

{ "some_key": "some value", "other_key: "some other value" }

Happily, you can create a list of items, which works pretty much as an array and then use Object.assign as if it was an array, then convert the output to a JSON object

var items = {};
items["some_key"]="some value";
items["other_key"]="some other value";
const jsonString = JSON.stringify(Object.assign({}, items)) 
const json_obj = JSON.parse(jsonString);

The advantage of working with item lists is that you don't have to deal with the JSON data as a string or quotes, commas etc... You can instead just manage the item object filling data in or removing it. When you are done you just convert the item variable to a JSON object and do whatever you need to do with it.

Comments

0

With your cars array: var cars = [2,3,..]. You can use for loop like this

    var carArray = new Array();  

    for(var c in cars) {
      var jsonObj = new Object();
      jsonObj.car_id = cars[c];
      carArray.push(jsonObj);
    }
    

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.