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?
-
Just double-checking: is the array you want to send to the page a JavaScript array or is it on the server?Ian Oxley– Ian Oxley2010-02-19 10:22:12 +00:00Commented 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.dotty– dotty2010-02-19 10:24:16 +00:00Commented Feb 19, 2010 at 10:24
-
stackoverflow.com/questions/2295496/convert-array-to-json/…mehmet– mehmet2022-03-17 13:36:05 +00:00Commented Mar 17, 2022 at 13:36
12 Answers
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
10 Comments
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.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 })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 usingJSON.parse(), we convert Json string to a Json object.
1 Comment
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.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
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
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
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.