배열을 JSON으로 변환


383

var cars = [2,3,..]몇 가지 정수를 보유 하는 배열 이 있습니다. 배열에 몇 가지 값을 추가했지만 이제 jQuery의 .get메소드 를 통해이 배열을 페이지로 보내야합니다 . 전송하기 위해 JSON 객체로 변환하려면 어떻게해야합니까?


다시 한 번 확인 : 페이지에 JavaScript 배열을 보내려는 배열입니까, 아니면 서버에 있습니까?
Ian Oxley

Javascript 배열이므로 Python 스크립트로 보내고 Python은 JSON 문자열을 사용하여 작업합니다.
dotty

답변:


657

이전 버전과의 호환성을위한 스크립트 : https://github.com/douglascrockford/JSON-js/blob/master/json2.js

그리고 전화 :

var myJsonString = JSON.stringify(yourArray);

참고 : JSON 객체는 이제 대부분의 최신 웹 브라우저 (IE 8 이상)의 일부입니다. 전체 목록 은 caniuse 를 참조 하십시오. 크레딧은 다음과 같습니다 : @Spudley


5
이것은 작동합니다 .jQuery에는 이와 같은 기능이 있습니까? jQuery에 이미 함수가있는 경우 다른 js 파일을 첨부하지 않는 것이 좋습니다.
dotty

1
jQuery는 1.4.1에서 JSON.parse를 구현하지만 JSON.stringify는 구현하지 않습니다. json2.js를 <3k로 축소하면 생각합니다.
gnarf

6
예, jQuery에이 기능이 내장되어 있지 않다는 사실에
놀랐

120
여전히이 답변을 읽는 사람이라면 모든 최신 브라우저에는 JSON객체가 표준으로 포함되어 있으므로 IE7 또는 Firefox 3.0과 같은 이전 브라우저를 지원하지 않는 한이 스크립트가 필요하지 않습니다 . 지원 차트는 CanIUse 를 참조하십시오 .
Spudley

1
브라우저 콘솔에서이 작업을 수행 할 수 있습니다. var a = [paste]; JSON.stringify (a)
Michael Cole

70

나는 그렇게했다 :

만약 내가 가지고 있다면:

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);

pluginArrayArg (순수한 자바 스크립트 배열)를 JSON 배열로 변환하는 방법 :

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

1
당신은 내 생명을 구했습니다
MD. Shafayatul Haque

44

와우, 요즘 훨씬 쉬워 진 것 같습니다 ... 3 가지 방법 :

json = { ...array };

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

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

2
jsonString = JSON.stringify({ ...array })
Krishna Torque

11

json2 라이브러리를 사용하기로 결정하고 "순환 데이터 구조"에 대한 오류가 발생했습니다.

json2에게 복잡한 객체를 변환하는 방법을 알려 주면 해결되었습니다. 지금 작동 할뿐만 아니라 필요한 필드 만 포함했습니다. 내가 한 방법은 다음과 같습니다.

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;
   }

11

또는 배열을 객체로 정의하십시오. (var cars = {};) 그런 다음 json으로 변환 할 필요가 없습니다. 이것은 귀하의 예에서는 실용적이지 않지만 나를 위해 잘 작동했습니다.


4

다른 방법은 다음과 같습니다.

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

        var json_string = JSON.stringify(json_arr);

1

요청한 것과 같은 객체가 하나만 있으면 다음이 작동합니다.

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

1

정수 배열에서 유효한 json을 생성하는 가장 짧은 방법은

let json = `[${cars}]`

더 일반적인 객체 / 배열 ( 순환 참조 없이 )에는 JSON.stringify (cars)를 사용하십시오


1

내 배열은 아래와 같기 때문에 .push 함수를 사용하여 동적으로 만들었습니다.

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

배열을 json으로 변환하는 유일한 방법은

json = Object.assign({}, my_array);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.