배열을 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.