2017-01-19 1 views
0

실제 출력 :JS를 사용하여 JavaScript 개체를 구문 분석하고 교환하는 방법은 무엇입니까?

{ 
    "workbookInformation": { 
    ... 
    }, 
    "dashboard1": { 
    "auto-hidden": "0", 
    "maximized": "1", 
    "worksheet": { 
     "worksheet8": "APAC", 
     "worksheet2": "Freq_SC_Value", 
     "worksheet3": "L1 Type Filter", 
     "worksheet1": "Pillar Name" 
    }, 
    "class": "dashboard", 
    "name": "AnalysisByGeography" 
    }, 
    "dashboard2": { 
    ... 
    }, 
    "datasources3": { 
    ... 
    } 
} 

필수 출력 :

 { 
    "workbookInformation": { 
    ... 
    }, 
    "AnalysisByGeography": { 
    "auto-hidden": "0", 
    "maximized": "1", 
    "worksheet": { 
     "APAC": "worksheet8", 
     "Freq_SC_Value": "worksheet2", 
     "L1 Type Filter": "worksheet3", 
     "Pillar Name": "worksheet1" 
    }, 
    "class": "dashboard", 
    "name": "AnalysisByGeography" 
    }, 
    "dashboard2": { 
    ... 
    }, 
    "datasources3": { 
    ... 
    } 
} 

나는 키 이름을 제공합니다 코드로했습니다. "//jashkenas.github.io/underscore/underscore-min.js"키 교환을 시도했습니다. 키 값 쌍을 뒤집을 외부 JS 파일을 시도했습니다.

+0

당신은 무엇을 의미합니까? '대시 보드 1'만 변경 하시겠습니까? –

+0

더 노골적으로 표현할 수 있습니까? "dashboardX"키가 기본 이름으로 대체되기를 원한다는 뜻입니까? 절대로 INPUT-> OUTPUT을 넣고 사람들이 원하는 것을 이해할 것으로 기대하십시오. –

+0

@ MasterDJon "name"값으로 "dashboardx"키를 변경하고 값으로 "worksheetx"를 바꾸거나 바꾸고 싶습니다. –

답변

0

JSON.stringify(youredata)을 사용해보세요. 그렇지 않으면 어쩌면 유 주어진 데이터를 분할하고 json 형식으로 동일한 기능을 가진 배열을 변환해야합니다.

+0

포스터가 의도 한 것이 확실하지 않은 경우 대답하기 전에 질문해야합니다. –

0

좋아, 여기에 내가 어떻게 설명해야하는지 썼다. 설명 할 방법이 더 이상 보이지 않기 때문이다. 그러나 JavaScript로 시작한다면 이러한 유형의 질문을하기 전에 더 많은 것을 배울 것을 강력하게 제안합니다.

다른 유효성 검사가 필요할 수 있습니다. 또한 "대시 보드"로 시작하는 키에 대해서만 수행했는데, 그때 키가 "이름"인 개체를 포함하는 모든 키에 대해 문자열을 더한 것으로 생각했을지라도. 배우고 싶다면, 여기에 꽤 강한 기반을 가지고 있기 때문에 스스로 고쳐야합니다.

내가 갖고 있었고 여전히 가지고있는 것처럼 학습을 찾았 으면 좋겠다.

var data = 
 
{ 
 
    "workbookInformation": { 
 
    "a": "..." 
 
    }, 
 
    "dashboard1": { 
 
    "auto-hidden": "0", 
 
    "maximized": "1", 
 
    "worksheet": { 
 
     "worksheet8": "APAC", 
 
     "worksheet2": "Freq_SC_Value", 
 
     "worksheet3": "L1 Type Filter", 
 
     "worksheet1": "Pillar Name" 
 
    }, 
 
    "class": "dashboard", 
 
    "name": "AnalysisByGeography" 
 
    }, 
 
    "dashboard2": { 
 
    "a": "..." 
 
    }, 
 
    "datasources3": { 
 
    "a": "..." 
 
    } 
 
} 
 

 
var isDashboard = new RegExp('dashboard[0-9]+', 'i'); 
 
var isWorksheet = new RegExp('worksheet[0-9]+', 'i'); 
 
for(var dataKey in data) { 
 
\t var innerData = data[dataKey]; 
 
\t if (typeof(innerData["worksheet"]) == "object") { 
 
\t \t var newWS = {}; 
 
\t \t for(var wsKey in innerData["worksheet"]) { 
 
\t \t \t newWS[innerData["worksheet"][wsKey]] = wsKey; 
 
\t \t } 
 
\t \t innerData["worksheet"] = newWS; 
 
\t } 
 

 
\t if (isDashboard.test(dataKey) && innerData['name']) { 
 
\t \t delete data[dataKey]; 
 
\t \t dataKey = innerData['name']; 
 
\t } 
 
\t 
 
\t data[dataKey] = innerData; 
 
} 
 

 
console.log(data);

관련 문제