복붙노트

[JQUERY] jQuery를 JSON에 일렬로 [중복]

JQUERY

jQuery를 JSON에 일렬로 [중복]

해결법


  1. 1.JSON-JS - 자바 스크립트에서 JSON.

    JSON-JS - 자바 스크립트에서 JSON.

    문자열에 객체를 변환하려면 JSON.stringify을 사용합니다 :

    var json_text = JSON.stringify(your_object, null, 2);
    

    객체에 JSON 문자열을 변환하려면, JSON.parse를 사용합니다 :

    var your_object = JSON.parse(json_text);
    

    그것은 최근에 존 레식 추천했다 :

    나는 그가 자바 스크립트 문제에 대해 말씀을 신뢰하는 경향이 :)

    모든 최신 브라우저 (고대하지 많은 오래된 것들) 기본적으로 JSON 객체를 지원합니다. 그들은 이미 정의하지 않는 경우 크록 포드의 JSON 라이브러리의 현재 버전은 그대로 브라우저를 기본 구현을 떠나, JSON.stringify 및 JSON.parse를 정의합니다.


  2. 2.나는 6 개월 JQuery와-JSON을 사용하고 그것을 잘 작동합니다. 그것은 사용하기 매우 간단합니다 :

    나는 6 개월 JQuery와-JSON을 사용하고 그것을 잘 작동합니다. 그것은 사용하기 매우 간단합니다 :

    var myObj = {foo: "bar", "baz": "wockaflockafliz"};
    $.toJSON(myObj);
    
    // Result: {"foo":"bar","baz":"wockaflockafliz"}
    

  3. 3.IE8 +에 작품

    IE8 +에 작품

    jQuery를 사용 필요 없음 :

    JSON.stringify(countries); 
    

  4. 4.나는 그것을 사용하지 않은하지만 당신은 마크 깁슨에 의해 작성된 플러그인 jQuery를 시도 할 수도 있습니다

    나는 그것을 사용하지 않은하지만 당신은 마크 깁슨에 의해 작성된 플러그인 jQuery를 시도 할 수도 있습니다

    이는 두 가지 기능을 추가 $ .toJSON (값), $ .parseJSON (json_str [안전]).


  5. 5.아니, JSON으로 직렬화하는 표준 방법은 기존의 JSON 직렬화 라이브러리를 사용하는 것입니다. 이 작업을 수행하지 않으려면, 당신은 당신의 자신의 직렬화 메소드를 작성해야 할 것입니다.

    아니, JSON으로 직렬화하는 표준 방법은 기존의 JSON 직렬화 라이브러리를 사용하는 것입니다. 이 작업을 수행하지 않으려면, 당신은 당신의 자신의 직렬화 메소드를 작성해야 할 것입니다.

    이 작업을 수행하는 방법에 대한 지침을 원하는 경우에, 나는 가능한 일부 라이브러리의 소스를 검사 건의 할 것입니다.

    편집 : 내가 나와서 자신의 serliazation 방법을 쓰는 것은 나쁜 말을하지 않을거야,하지만 당신은 그것을 잘 형성 JSON을 사용하는 응용 프로그램에 중요한 경우에, 당신은 더 하나 "의 오버 헤드의 무게를해야한다는 고려해야합니다 사용자 정의 방법은 어느 날 당신이 예상하지 않은 것을 실패하는 경우가 발생할 수있는 가능성에 대한 의존성 ". 리스크 허용 여부는 전화입니다.


  6. 6.나는이 곳을 발견했다. 어디하지만 ... 아마에 StackOverflow에 기억할 수 :

    나는이 곳을 발견했다. 어디하지만 ... 아마에 StackOverflow에 기억할 수 :

    $.fn.serializeObject = function(){
        var o = {};
        var a = this.serializeArray();
        $.each(a, function() {
            if (o[this.name]) {
                if (!o[this.name].push) {
                    o[this.name] = [o[this.name]];
                }
                o[this.name].push(this.value || '');
            } else {
                o[this.name] = this.value || '';
            }
        });
        return o;
    };
    

  7. 7.외부 라이브러리를 사용하지 않으려는 경우가 .toSource () 네이티브 자바 스크립트 방법이지만 완벽하게 크로스 브라우저 아니다.

    외부 라이브러리를 사용하지 않으려는 경우가 .toSource () 네이티브 자바 스크립트 방법이지만 완벽하게 크로스 브라우저 아니다.


  8. 8.가장 좋은 방법은 JSON 객체의 polyfill을 포함하는 것입니다.

    가장 좋은 방법은 JSON 객체의 polyfill을 포함하는 것입니다.

    당신이 jQuery를 네임 스페이스 내에서 (JSON에 유효한 값을) JSON 표기법에 객체를 직렬화하는 방법을 만들 주장하는 경우에, 당신은 이런 식으로 뭔가를 할 수 :

    // This is a reference to JSON.stringify and provides a polyfill for old browsers.
    // stringify serializes an object, array or primitive value and return it as JSON.
    jQuery.stringify = (function ($) {
      var _PRIMITIVE, _OPEN, _CLOSE;
      if (window.JSON && typeof JSON.stringify === "function")
        return JSON.stringify;
    
      _PRIMITIVE = /string|number|boolean|null/;
    
      _OPEN = {
        object: "{",
        array: "["
      };
    
      _CLOSE = {
        object: "}",
        array: "]"
      };
    
      //actions to execute in each iteration
      function action(key, value) {
        var type = $.type(value),
          prop = "";
    
        //key is not an array index
        if (typeof key !== "number") {
          prop = '"' + key + '":';
        }
        if (type === "string") {
          prop += '"' + value + '"';
        } else if (_PRIMITIVE.test(type)) {
          prop += value;
        } else if (type === "array" || type === "object") {
          prop += toJson(value, type);
        } else return;
        this.push(prop);
      }
    
      //iterates over an object or array
      function each(obj, callback, thisArg) {
        for (var key in obj) {
          if (obj instanceof Array) key = +key;
          callback.call(thisArg, key, obj[key]);
        }
      }
    
      //generates the json
      function toJson(obj, type) {
        var items = [];
        each(obj, action, items);
        return _OPEN[type] + items.join(",") + _CLOSE[type];
      }
    
      //exported function that generates the json
      return function stringify(obj) {
        if (!arguments.length) return "";
        var type = $.type(obj);
        if (_PRIMITIVE.test(type))
          return (obj === null ? type : obj.toString());
        //obj is array or object
        return toJson(obj, type);
      }
    }(jQuery));
    
    var myObject = {
        "0": null,
        "total-items": 10,
        "undefined-prop": void(0),
        sorted: true,
        images: ["bg-menu.png", "bg-body.jpg", [1, 2]],
        position: { //nested object literal
            "x": 40,
            "y": 300,
            offset: [{ top: 23 }]
        },
        onChange: function() { return !0 },
        pattern: /^bg-.+\.(?:png|jpe?g)$/i
    };
    
    var json = jQuery.stringify(myObject);
    console.log(json);
    

  9. 9.예,해야 JSON.stringify 및 JSON.parse 당신의 Json_PostData $ 아약스를 호출하기 전에 :

    예,해야 JSON.stringify 및 JSON.parse 당신의 Json_PostData $ 아약스를 호출하기 전에 :

    $.ajax({
            url:    post_http_site,  
            type: "POST",         
            data:   JSON.parse(JSON.stringify(Json_PostData)),       
            cache: false,
            error: function (xhr, ajaxOptions, thrownError) {
                alert(" write json item, Ajax error! " + xhr.status + " error =" + thrownError + " xhr.responseText = " + xhr.responseText );    
            },
            success: function (data) {
                alert("write json item, Ajax  OK");
    
            } 
    });
    

  10. 10.그것은 기본적으로 2 단계 과정이다 :

    그것은 기본적으로 2 단계 과정이다 :

    첫째, 당신은 다음과 같은 캐릭터 라인 화해야합니다

    var JSON_VAR = JSON.stringify(OBJECT_NAME, null, 2); 
    

    그 후, 당신은 객체에 문자열을 변환해야합니다 :

    var obj = JSON.parse(JSON_VAR);
    

  11. 11.당신이 입력의 배열을 가지고 있지만 하나의 값이 제공된 경우 위의 솔루션은 고려하지 않는 것이 한 가지입니다.

    당신이 입력의 배열을 가지고 있지만 하나의 값이 제공된 경우 위의 솔루션은 고려하지 않는 것이 한 가지입니다.

    예를 들어, 백 엔드는 사람들의 배열을 기대하는 경우,하지만이 특별한 경우에, 당신은 단지 한 사람 다루고있다. 그런 일을 :

    <input type="hidden" name="People" value="Joe" />
    

    그런 다음 이전 솔루션, 그냥 같은 매핑 것이다 :

    {
        "People" : "Joe"
    }
    

    그러나 그것은 정말 매핑한다

    {
        "People" : [ "Joe" ]
    }
    

    이 문제를 해결하려면, 입력은 다음과 같은 모양입니다 :

    <input type="hidden" name="People[]" value="Joe" />
    

    그리고 당신은 다음과 같은 기능 사용 (다른 솔루션의 기반으로,하지만 약간 확장 된) 것

    $.fn.serializeObject = function() {
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (this.name.substr(-2) == "[]"){
            this.name = this.name.substr(0, this.name.length - 2);
            o[this.name] = [];
        }
    
        if (o[this.name]) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
    };
    
  12. from https://stackoverflow.com/questions/191881/serializing-to-json-in-jquery by cc-by-sa and MIT license