2016-11-11 1 views
0

私はベンダーから送られてきたJSONコードブロックを持っています。私がそれを使用するには、期間を削除するためにすべてのキー(約65)を操作するか、アプリケーションの使用を妨害する必要があります。 regexパターンをJS置換関数で使用してアンダースコアに置き換えようとしました。次の文字列があるとします:2つの繰り返し文字の間にあるピリオドのすべてのインスタンスを置換します。

JSON_String = '{ "Test.String.One" : "Answer.One" , "Test.String.Two" : "Answer.Two" , "Test.String.Three" : "Answer.Three"}'; 

キーのすべてのピリオドを置き換えますが、値は入れ替えない正規表現パターンが必要です。だから、間、{のいずれかのすべての期間のようになります。またはの間、および:

次のようになります行われた結果:

JSON_String = '{ "Test_String_One" : "Answer.One" , "Test_String_Two" : "Answer.Two" , "Test_String_Three" : "Answer.Three"}'; 

のようなので、いくつかのJavascriptのRhinoの実装を使用しているアプリケーション\ Kは動作していないようです(私のテストで何か間違っていない限り)。

これを達成するための正しい検索パターンを提供できるのは誰ですか?

1回の呼び出しでループを実行できない場合は、ループを使用してはなりません。

以下のようなものは問題ありません。私はちょうど何かを働かせる必要があります。

while (JSON_String.search(/regex/g) != -1) 
{ 
    JSON_String = JSON_String.replace(/regex/g,'_') 
} 
+0

私はそれを行うことはできますが、正規表現を使用することはできません。欲しいですか?? – youssouf

答えて

0

正規表現で行うことはできますが、必要以上に複雑な場合があります。これは、簡単にObject.keys().replace()で実現することができます:あなたは、単に使用することができます

var JSON_String = { "Test.String.One" : "Answer.One" , "Test.String.Two" : "Answer.Two" , "Test.String.Three" : "Answer.Three"}; 
 

 
document.querySelectorAll('code')[0].innerHTML = JSON.stringify(JSON_String); 
 

 
function UnderscoreKeys(obj) { 
 
    var keys = Object.keys(obj), 
 
     temp = {}; 
 
     
 
    for(var a = 0, len = keys.length; a < len; a++) { 
 
    \t  temp[keys[a].replace(/\./g, "_")] = obj[keys[a]]; 
 
    } 
 
    
 
    return temp; 
 
} 
 

 
JSON_String = UnderscoreKeys(JSON_String); 
 

 
document.querySelectorAll('code')[1].innerHTML = JSON.stringify(JSON_String);
<strong>Before:</strong><br /> 
 
<pre> 
 
    <code> 
 
    
 
    </code> 
 
</pre> 
 
<br /><br /><strong>After:</strong><br /> 
 
<pre> 
 
    <code> 
 
    
 
    </code> 
 
</pre>

0

function underscore(){ 
    var a = dotted = JSON.parse(JSON_string), underscored = {}; 
    for(var i in dotted){ 
      underscored[i.repace(/\./, "_")] = dotted[i]; 
     } 
    return JSON.stringify(underscored) 
    } 
関連する問題