2017-01-19 19 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

あなたが何を意味するのですか? 'dashboard1'だけを変更しますか? –

+0

もっと明示できますか? 「dashboardX」キーを基になる名前に置き換えることを意味しましたか?決してINPUT-> OUTPUTを入れて、人々があなたが望むものを理解することを期待してはいけません。 –

+0

@ MasterDJon私は "名前"値で "ダッシュボード"キーを変更し、 "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);

関連する問題