2016-10-31 13 views
0

カスタム属性名を使用してJSオブジェクトを作成しようとしています。基本的には、ルート要素に基づいてスキーマを作成したいと考えています。カスタム変数をJSON属性として追加する

にSyntaxError:欠落:プロパティID

後に続いて、私はしようとした(「アイテム」型は、配列と「プロパティ」であれば、型がオブジェクトである場合)

var helperObj = type.toLowerCase() === "array" ? "items" : "properties"; 
    var newSchema = { 
     "title": title, 
     "type": type, 
     helperObj.toString() : {} 
    }; 

上記に構文エラーを与えますStringをJSONとして解析します。

var schemaString="{ \"title\":"+title+", \"type\":"+type.toLowerCase()+","+helperObj+":{} }"; 
    var newSchema=JSON.parse(schemaString); 

これはというエラーを与える:

にSyntaxError:JSON.parse:JSONデータの行1列11、必要に応じて、私はJSオブジェクトを取得できますか

で予期しない文字を?

+2

をおES6を使用している場合は、' {{} [helperObj]}書くことができます。 [this](http://stackoverflow.com/questions/9398535/add-dynamic-key-value-pairs-to-javascript-array-or-hash-table)も読んでください。 –

+2

[「JSONオブジェクト」のようなものはありません。](http://benalman.com/news/2010/03/theres-no-suchthing-as-a-json/) – nnnnnn

+1

@Aᴍɪʀポストのメソッドも働いた。ありがとう。 – SachiDangalla

答えて

3

あなたはES6使用している場合は、

var helperObj = type.toLowerCase() === "array" ? "items" : "properties"; 
var newSchema = { 
    "title": title, 
    "type": type, 
}; 

newSchema[helperObj] = {}; 

または使用を行うことができます: `:

var helperObj = type.toLowerCase() === "array" ? "items" : "properties"; 
var newSchema = { 
    "title": title, 
    "type": type, 
    [helperObj] : {} 
}; 
+1

はい、これは基本的にAMIRのソリューションです - ありがとう – SachiDangalla

関連する問題