2017-03-01 15 views
0

を持つオブジェクトの完全であるJSONオブジェクトのクリーンアップ、私は次のようにフォーマットされていますJSONオブジェクトがあります。1つの属性

{ 
    "ATTR1": { 
     "0":"Value1" 
    }, 
    "ATTR2": { 
     "0":"Value2" 
    } //and so on 
} 

をし、このフォーマットは、属性の数十のために保持しています。 JSONをより好きにする方法を探しています:

{ 
    "ATTR1": "Value1", 
    "ATTR2": "Value2" //and so on 
} 

Javascriptでこれを行う簡単な方法はありますか?私は次のようなものを試しました:

for(var attr in obj) { 
    if(obj.hasOwnProperty(attr)) { 
     attr = attr[0]; 
    } 
} 

しかし、これは動作していません。何か案は?

+0

予測可能なスキーマですか?少しでも怖いことのように思えます。 – Brad

答えて

0

:そのため、オブジェクトのキーに減らすhttps://jsfiddle.net/coLxfeum/

+0

ありがとう!私は元のオブジェクトを変更し、既に持っているものに最も近いので、このソリューションを使用して終了しました。 – agoedken

0

あなたは近くです!

このような何か試してください:あなたが変異する場合

let foo = { 
 
    "ATTR1": { 
 
     "0":"Value1" 
 
    }, 
 
    "ATTR2": { 
 
     "0":"Value2" 
 
    } //and so on 
 
}; 
 

 
let res = Object.keys(foo).reduce((a,b) => { 
 
\t a[b] = foo[b]['0']; 
 
    return a; 
 
}, {}); 
 

 
console.log(res)

2

用途:

var obj = { 
    "ATTR1": { 
     "0":"Value1" 
    }, 
    "ATTR2": { 
     "0":"Value2" 
    } //and so on 
}; 
var obj2 = {}; 
for(var attr in obj) { 
    if(obj.hasOwnProperty(attr)) { 
     obj2[attr] = obj[attr][0]; 
    } 
} 


alert(JSON.stringify(obj2)); 

がフィドルを元のobj、あなたはこれを行うことができます:JavaScriptのオブジェクトの上に

for(var attr in obj) { 
    if(obj.hasOwnProperty(attr)) { 
     obj[attr] = obj[attr][0]; 
    } 
} 
+0

私は '['0']'をしますが、基本的には私がやることです。 – epascarello

+0

@epascarello、ありがとう、悪い考えではない:) – baao

0

反復処理は、IMO、Object.keys()を使用して簡単です。これは主要なブラウザでサポートされています...とにかく、トップレベルのオブジェクトを反復し、すべての "smallObject"値を取得して平坦化したいとします。小切手はあなたが好きなだけ厳密にすることができます(「0」キーなどを主張しますが)、基本的には、崩壊している値が文字列値を含む単一値のオブジェクトであることが重要です。とにかく - ここにあなたがそれを行うことができ方法は次のとおりです。

var v1 = { 
    "ATTR1": { 
     "0": "Value1" 
    }, 
    "ATTR2": { 
     "0": "Value2" 
    } 
} 

function flatten(obj) { 
    Object.keys(obj).forEach(function(attr) { 
     var smallObj = obj[attr]; 
     var keys = Object.keys(smallObj); 
     if(keys.length === 1 && typeof smallObj[keys[0]] === 'string') { // && keys[0] === "0" ? 
      obj[attr] = smallObj[keys[0]]; 
     } // else throw Error(...) ? 
    }) 
    return obj; 
} 

console.log(flatten(v1)); 

> { ATTR1: 'Value1', ATTR2: 'Value2' } 
0

はこれを試してみてください:

var jsonObj = { 
 
    "ATTR1": { 
 
     "0":"Value1" 
 
    }, 
 
    "ATTR2": { 
 
     "0":"Value2" 
 
    } 
 
}; 
 

 
var newJson = {}; 
 
for(var i = 0;i<Object.keys(jsonObj).length;i++) { 
 
    newJson[Object.keys(jsonObj)[i]] = jsonObj[Object.keys(jsonObj)[i]]["0"]; 
 
} 
 

 
console.log(newJson);

関連する問題