[解決済み] 返されたJSONオブジェクトのプロパティを(小文字の)キャメルケースに変換する
2023-06-19 20:57:55
質問
APIからこのようなJSONが返されました。
Contacts: [{ GivenName: "Matt", FamilyName: "Berry" }]
これを私のコードスタイル(camelCase - 小文字の頭文字)と一致させるために、配列を変換して次のようにしたいと思います。
contacts: [{ givenName: "Matt", familyName: "Berry" }]
これを行うための最も簡単で最良の方法は何ですか?新しいContactオブジェクトを作成し、返された配列内のすべての連絡先を繰り返し処理するのですか?
var jsonContacts = json["Contacts"],
contacts= [];
_.each(jsonContacts , function(item){
var contact = new Contact( item.GivenName, item.FamilyName );
contacts.push(contact);
});
とか、元の配列をマッピングしたり、何らかの形で変換することは可能でしょうか?
どのように解決するのですか?
ここに、JavaScriptオブジェクトのすべてのプロパティを適切にキャメルケース化する、信頼性の高い再帰的な関数があります。
function toCamel(o) {
var newO, origKey, newKey, value
if (o instanceof Array) {
return o.map(function(value) {
if (typeof value === "object") {
value = toCamel(value)
}
return value
})
} else {
newO = {}
for (origKey in o) {
if (o.hasOwnProperty(origKey)) {
newKey = (origKey.charAt(0).toLowerCase() + origKey.slice(1) || origKey).toString()
value = o[origKey]
if (value instanceof Array || (value !== null && value.constructor === Object)) {
value = toCamel(value)
}
newO[newKey] = value
}
}
}
return newO
}
テストします。
var obj = {
'FirstName': 'John',
'LastName': 'Smith',
'BirthDate': new Date(),
'ArrayTest': ['one', 'TWO', 3],
'ThisKey': {
'This-Sub-Key': 42
}
}
console.log(JSON.stringify(toCamel(obj)))
出力します。
{
"firstName":"John",
"lastName":"Smith",
"birthDate":"2017-02-13T19:02:09.708Z",
"arrayTest": [
"one",
"TWO",
3
],
"thisKey":{
"this-Sub-Key":42
}
}
関連
-
[解決済み] JavaScriptでオブジェクトのキー/プロパティの数を効率的にカウントする方法
-
[解決済み] jQueryでフォームデータをJavaScriptオブジェクトに変換する
-
[解決済み] JSON文字列を安全にオブジェクトに変換する
-
[解決済み] JavaScript の文字列をすべて小文字に変換する
-
[解決済み] JSオブジェクトをJSON文字列に変換する
-
[解決済み] .NETでC#オブジェクトをJSON文字列に変換するには?
-
[解決済み] JSONをC#のダイナミックオブジェクトにデシリアライズする?
-
[解決済み] JavaScriptオブジェクトのプロパティを一覧表示するには?
-
[解決済み] jQueryで入力ファイルが空かどうかをチェックする方法
-
[解決済み] JavaScriptでDIVを表示・非表示にするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JSのDateからDay名
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複
-
[解決済み] jqueryでdivの要素がオーバーフローしていないかチェックする
-
[解決済み] 文字列がすべて同じ部分文字列で構成されているかどうかを調べるにはどうすればよいですか?
-
[解決済み] JSXとLoadshを使用して、ある要素をn回繰り返す方法
-
[解決済み] jQueryの$という記号の意味は何ですか?
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] JavaScript で `throw` の後に `return` をする必要がありますか?
-
[解決済み] これは純関数ですか?