중첩 경로 및 배열을 사용하여 JavaScript에서 JSON으로 양식 직렬화

공동 의존

유사한 질문이 여기에서 해결됩니다. 다음 솔루션을 사용하여 jQuery를 사용하여 양식 데이터를 JavaScript 객체로 변환 합니다.

$.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name] !== undefined) {
            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;
};

그러나 중첩 된 개체가있는 JSON을 사용하려는 경우에는 작동하지 않습니다. 예를 들어,이 양식의 경우 :

Employee name:      <input type="text" id="employee" name="name"/>
Department name:    <input type="text" id="department" name="department.name"/>
Department chief1:  <input type="text" id="chief1" name="department.chief[0]"/>
Department chief2:  <input type="text" id="chief2" name="department.chief[1]"/>

나는 얻고있다: {"name":"John","department.name":"IT" , "department.chief[0]":"Mike" "department.chief[1]":"Lucas"}

하지만 내가 필요한 것은 {"name":"John","department" : {"name":"IT"}, "chief" : [ "Mike", "Lucas" }

이런 식으로 수행하는 serializeObject의 적응이 있습니까?

몇 가지 배경 정보를 제공하려면 Spring MVC 컨트롤러에 AJAX 호출을 제출하고 Jackson이 해당 형식이 중첩 된 객체를 생성하기를 기대하기 때문에 이것이 필요합니다.

공동 의존

이것은 중첩 된 개체와 배열을 모두 지원하는 serializeObject의 수정 된 버전입니다.

$.fn.serializeObject = function() {
    var arrayData, objectData;
    arrayData = this.serializeArray();
    objectData = {};

    $.each(arrayData, function() {
        this.value = !this.value ? '' : this.value;
        processObject(objectData, this.name, this.value);
    });

    return objectData;
};

function processObject(obj, key, value){
    if(key.indexOf('.') != -1) {
        var attrs = key.split('.');
        var tx = obj;
        for (var i = 0; i < attrs.length - 1; i++) {
            var isArray = attrs[i].indexOf('[') != -1;
            var isNestedArray = isArray && (i != attrs.length-1);
            var nestedArrayIndex = null;
            if(isArray){
                nestedArrayIndex = attrs[i].substring(attrs[i].indexOf('[') +1 , attrs[i].indexOf(']'));
                attrs[i] = attrs[i].substring(0, attrs[i].indexOf('['));
                if (tx[attrs[i]] == undefined){ 
                    tx[attrs[i]] = [];
                }
                tx = tx[attrs[i]];
                if(isNestedArray){
                    if(tx[nestedArrayIndex] == undefined){
                        tx[nestedArrayIndex] = {};
                    }
                    tx = tx[nestedArrayIndex];
                }

            }else{
                if (tx[attrs[i]] == undefined){ 
                    tx[attrs[i]] = {};
                }
                tx = tx[attrs[i]];
            }               
        }
        processObject(tx, attrs[attrs.length - 1], value);
    }else{
        var finalArrayIndex = null;
        if(key.indexOf('[') != -1){
            finalArrayIndex = key.substring(key.indexOf('[') +1 , key.indexOf(']'));
            key = key.substring(0, key.indexOf('['));               
        }
        if(finalArrayIndex == null){
            obj[key] = value;
        }else{
            if(obj[key] == undefined){
                obj[key] = [];
            }
            obj[key][finalArrayIndex] = value;
        }           
    }       
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Newtonsoft.Json을 사용하여 C #에서 중첩 배열로 json을 역 직렬화하는 방법

분류에서Dev

Symfony 4에서 중첩 된 DateTime 객체를 사용하여 json을 엔티티로 역 직렬화

분류에서Dev

올바른 형식으로 배열을 직렬화 및 직렬화 해제하는 방법

분류에서Dev

JQuery에서 AJAX 호출을 사용하여 양식 직렬화 및 제출

분류에서Dev

Javascript는 양식을 JSON으로 직렬화합니다.

분류에서Dev

배열에서 여러 경로 및 중첩 경로 만들기

분류에서Dev

Json.NET을 사용하여 Json String에서 중첩 된 DataSet 역 직렬화

분류에서Dev

RMI를 통해 직렬화 및 사용할 수있는 방식으로 다중 바이트 배열을 래핑하는 방법

분류에서Dev

Jackson을 사용하여 JAVA 클래스를 대상으로하는 JSON 직렬화 및 역 직렬화

분류에서Dev

중첩 된 양식, 업데이트 및 생성을 하나의 양식으로

분류에서Dev

JavaScript를 사용하여 ajax 양식 직렬화와 동일한 HTTP 요청으로 양식 데이터 제출

분류에서Dev

Jackson을 사용하여 JSON 배열을 매핑으로 역 직렬화

분류에서Dev

PHP를 사용하여 배열 (배열에서 쿼리 문자열로)을 직렬화하는 방법

분류에서Dev

사전을 이진으로 직렬화 및 역 직렬화

분류에서Dev

중첩 배열을 사용하여 PHP를 JSON으로 변환

분류에서Dev

C #에서 중첩 된 목록으로 JSON 역 직렬화

분류에서Dev

직렬화되지 않은 배열 형식으로 Ajax로 양식을 제출 하시겠습니까?

분류에서Dev

다시 역 직렬화하기 전에 문자열로 직렬화 된 개체에서 잠재적으로 중첩 된 문자열 바꾸기

분류에서Dev

현재 상태로 양식 직렬화 및 역 직렬화

분류에서Dev

System.Text.Json을 사용하여 배열 json 개체의 중첩 된 배열을 역 직렬화

분류에서Dev

형식 패턴을 사용하여 문자열을 값으로 역 직렬화

분류에서Dev

C # ASP.NET에서 RestSharp 및 JSON.Net을 사용하여 json 배열 역 직렬화

분류에서Dev

Django를 사용하여 json 직렬화 데이터를 양식에서 ajax로 보내는 방법

분류에서Dev

ServiceStack을 위해 양식을 배열로 직렬화

분류에서Dev

POST 요청 C #을 위해 JSON을 JSON 배열 (중첩 JSON)로 직렬화

분류에서Dev

JavaScript를 사용하여 문자열로 저장된 중첩 배열을 다시 중첩 배열로 변환

분류에서Dev

C #에서 List <T> 직렬화 및 js 배열로 역 직렬화

분류에서Dev

배열을 포함한 중첩 클래스를 사용하여 JSON에서 C #으로 변환

분류에서Dev

중첩 된 JSON을 중첩 된 Dictionary <string, object>로 역 직렬화

Related 관련 기사

  1. 1

    Newtonsoft.Json을 사용하여 C #에서 중첩 배열로 json을 역 직렬화하는 방법

  2. 2

    Symfony 4에서 중첩 된 DateTime 객체를 사용하여 json을 엔티티로 역 직렬화

  3. 3

    올바른 형식으로 배열을 직렬화 및 직렬화 해제하는 방법

  4. 4

    JQuery에서 AJAX 호출을 사용하여 양식 직렬화 및 제출

  5. 5

    Javascript는 양식을 JSON으로 직렬화합니다.

  6. 6

    배열에서 여러 경로 및 중첩 경로 만들기

  7. 7

    Json.NET을 사용하여 Json String에서 중첩 된 DataSet 역 직렬화

  8. 8

    RMI를 통해 직렬화 및 사용할 수있는 방식으로 다중 바이트 배열을 래핑하는 방법

  9. 9

    Jackson을 사용하여 JAVA 클래스를 대상으로하는 JSON 직렬화 및 역 직렬화

  10. 10

    중첩 된 양식, 업데이트 및 생성을 하나의 양식으로

  11. 11

    JavaScript를 사용하여 ajax 양식 직렬화와 동일한 HTTP 요청으로 양식 데이터 제출

  12. 12

    Jackson을 사용하여 JSON 배열을 매핑으로 역 직렬화

  13. 13

    PHP를 사용하여 배열 (배열에서 쿼리 문자열로)을 직렬화하는 방법

  14. 14

    사전을 이진으로 직렬화 및 역 직렬화

  15. 15

    중첩 배열을 사용하여 PHP를 JSON으로 변환

  16. 16

    C #에서 중첩 된 목록으로 JSON 역 직렬화

  17. 17

    직렬화되지 않은 배열 형식으로 Ajax로 양식을 제출 하시겠습니까?

  18. 18

    다시 역 직렬화하기 전에 문자열로 직렬화 된 개체에서 잠재적으로 중첩 된 문자열 바꾸기

  19. 19

    현재 상태로 양식 직렬화 및 역 직렬화

  20. 20

    System.Text.Json을 사용하여 배열 json 개체의 중첩 된 배열을 역 직렬화

  21. 21

    형식 패턴을 사용하여 문자열을 값으로 역 직렬화

  22. 22

    C # ASP.NET에서 RestSharp 및 JSON.Net을 사용하여 json 배열 역 직렬화

  23. 23

    Django를 사용하여 json 직렬화 데이터를 양식에서 ajax로 보내는 방법

  24. 24

    ServiceStack을 위해 양식을 배열로 직렬화

  25. 25

    POST 요청 C #을 위해 JSON을 JSON 배열 (중첩 JSON)로 직렬화

  26. 26

    JavaScript를 사용하여 문자열로 저장된 중첩 배열을 다시 중첩 배열로 변환

  27. 27

    C #에서 List <T> 직렬화 및 js 배열로 역 직렬화

  28. 28

    배열을 포함한 중첩 클래스를 사용하여 JSON에서 C #으로 변환

  29. 29

    중첩 된 JSON을 중첩 된 Dictionary <string, object>로 역 직렬화

뜨겁다태그

보관