2017-02-14 5 views
0

JavaScriptを使い始めたばかりで、その場でJSONをすぐに作成/構築する方法についてのガイダンスが必要です。複雑なJSONをJavaScriptで作成する

一部のキーは変数である必要があります。たとえば、以下のJSONでは、 'variable_key_ *'というキーは変数からのものである必要があります。

{ 
    "static_key_1": "value", 
    "static_key_2": [{ 
    "static_key_3": { 
     "id": "1097274153" 
    }, 
    "static_key_4": "value", 
    "static_key_5": { 
     "static_key_6": { 
     "variable_key_1": "value", 
     "variable_key_2": "value", 
     "variable_key_3": "value" 
     }, 
     "static_key_7": { 
     "static_key_8": [ 
      "value" 
     ] 
     } 
    } 
    }] 
} 
+0

ご質問は明確ではない、と十分に特定ではありません。それを修正するために編集してください。 – isherwood

+1

JSオブジェクトの形式が正しくない場合、 "static_key_2"に影響する値はオブジェクトと配列の組み合わせです。最初にhttp://jsonlint.com/のようなツールでオブジェクトを確認してから投稿を編集してください(あなたの場合、JSオブジェクトはJSONオブジェクトに直接マッピングされるためツールは動作します):) – ValLeNain

+0

@isherwoodそれをもっと明確にしようとしました。 – user45097

答えて

1

変数でオブジェクトにキーを設定するには、かっこ表記を使用します。

let theVariable = 'useful_name'; 
let theValue = 12345; 
let myObj = {}; 

myObj [ theVariable ] = theValue; 

はになります:

{ useful_name : 12345 } 

そして、あなたが期待するとして文字列化。詳細は要求に基づいて

編集:

あなたは私たちがすでに持っているオブジェクトを使用します、オブジェクトの配列を持つネストされたオブジェクトを作成したいと言います。

myObj [ someOtherVar ] = {}; 
let myObjSomeOtherVar = myObj [ someOtherVar ]; 
myObjSomeOtherVar [ someOtherKey ] = [ ].push ({ }); 
let theArrayOfObjects = myObjSomeOtherVar [ someOtherKey ]; 
theArrayOfObjects [ 0 ] [ anotherKeyName ] = 'hello'; 

これはトリックは自分のデータ抽象スキーマ(そうしたいスケルトン)を開発することである

{ useful_name : 12345, 
    valOfSomeOtherVar : 
     { valOfSomeOtherKey : 
      [ { valOfAnotherKeyName : 'hello' } ] 
     } 
} 

(あなたが実際にすべてのVARSなどを宣言して)で、ルーチンを書きしまいますそれはそれを構築する。私はほんの小さなutil objでない限り、手でオブジェクトを作成することはめったにありません。通常は空のオブジェクトをルーチンに渡します(ループ、再帰、条件文などを使用して)。そして、練習に関しては、スケルトンを少なくともデータ構造のために文書化しておくことは常に良い考えです。これはキーイングと値のいくつかの変数を渡すだけで全体を生成する関数を書くための参照としても使うことができます。あなたは、あなたが予測したいオブジェクトを返すようなその関数のテストを書くでしょう。

+0

こんにちは@Tim Consolazio、フィードバックありがとうございます。私はあなたの投稿を理解しています。しかし、JSONのネストされた部分を作成するにはどうすればいいですか? static_key_2以降はどうですか? – user45097

+0

私はおそらく情報をフィードしてオブジェクト全体を生成するルーチンを書くだろう。 1つのネストされた配列を作成する方法を示す少しのサンプルを投稿します。 –

+0

こんにちは@Tim Consolazio、ちょうどこれを今行く。私はコピーし、varsを宣言しました(ノードが不平を言っているのでvarsに変更しました)、このエラーが発生しました: 'TypeError:undefinedのotherKeyNameプロパティを設定できません - theArrayOfObjects [0] [anotherKeyName] = 'hello';'。 – user45097

1

あなたはそれを1つのステートメントで作成する必要がない(そしてあなたのチャンスが少ない)次のように行いますdは:

var yourObject = { 
    "static_key_1": "value", 
    "static_key_2": [{ 
    "static_key_3": { 
     "id": "1097274153" 
    }, 
    "static_key_4": "value", 
    "static_key_5": { 
     "static_key_6": {}, 
     "static_key_7": { 
      "static_key_8": [ 
       "value" 
      ] 
     } 
    } 
    }] 
} 

/* Get their value from wherever you want */ 
var variable_key_1 = 'something'; 
var variable_key_2 = 'something_else'; 
var variable_key_3 = 'another_one'; 

yourObject.static_key_2[0].static_key_5.static_key_6[variable_key_1] = 'value'; 
yourObject.static_key_2[0].static_key_5.static_key_6[variable_key_2] = 'value'; 
yourObject.static_key_2[0].static_key_5.static_key_6[variable_key_3] = 'value'; 

戦略は括弧表記を使用して、静的な名前を持つものの後に変数名を持つプロパティを持つオブジェクトを構築することです。

これは、になります:

{ 
    "static_key_1": "value", 
    "static_key_2": [{ 
    "static_key_3": { 
     "id": "1097274153" 
    }, 
    "static_key_4": "value", 
    "static_key_5": { 
     "static_key_6": { 
      "something": "value", 
      "something_else": "value", 
      "another_one": "value" 
     }, 
     "static_key_7": { 
      "static_key_8": [ 
       "value" 
      ] 
     } 
    } 
    }] 
} 
+0

こんにちは@vallenain、フィードバックありがとう。私はNode cmd行を使って上記を実行しました。 static_key_2: [{static_key_3:[オブジェクト]、 static_key_4: '値'、 static_key_5:[static_key_5:[オブジェクト]]が表示されているので、console.out(yourObject)オブジェクト]}}} ' – user45097

+0

それはちょうどそれが印刷されている方法です。オブジェクトそのものは期待どおりでなければなりません。 – ValLeNain

関連する問題