0

私はJavaScriptが初めてです。経験者なら簡単にできると思います。

Amazon AWS SDK for Node.JS の SimpleDB getAttributes 関数は、次のようなデータの配列を返します。

my_JSON_object = {"Attributes":[{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"}]}

次のような単純なオブジェクトに変換したい:

my_JSON_object = {"Attributes":{"myName":"myValue","myName":"myValue",...}}

ドット構文を使用して、Attributes.myName などにアクセスできるようにします。

どうすればそのような変換を行うことができますか?

4

3 に答える 3

2
var my_JSON_object = {"Attributes":[{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"}]}

var my_new_JSON_object = { 'Attributes' : {} };

my_JSON_object.Attributes.forEach( function ( value, index ) {
    my_new_JSON_object.Attributes[ value.Name ] = value.Value;
} );
于 2013-08-16T21:05:03.050 に答える
0
var json = {"Attributes":[
    {"Name":"myName","Value":"myValue"},
    {"Name":"myName","Value":"myValue"},
    {"Name":"myName","Value":"myValue"},
    {"Name":"myName","Value":"myValue"},
    {"Name":"myName","Value":"myValue"},
    {"Name":"myName","Value":"myValue"},
    {"Name":"myName","Value":"myValue"},
    {"Name":"myName","Value":"myValue"},
    {"Name":"myName","Value":"myValue"}
]}

var attrs = json.Attributes.slice(0);

json.Attributes = {};

for(var i = 0, len = attrs.length; i < len; i++) {
    var attr = json.Attributes[i],
        key = attr.Name,
        val = attr.Value;

    json.Attributes[key] = val;
}
于 2013-08-16T21:02:35.867 に答える
0

UnderscoreJSは、そのようなことを行うための優れたライブラリです。これにより、コードがよりクリーンになり、保守が容易になります。

var result = _.chain(my_JSON_object.Attributes)
.map(function(item){return [item.Name, item.Value]})
.object().value();

あなたがこの言語に不慣れな場合、これは少し圧倒されるかもしれませんが、長期的には非常に役立つと信じています.

于 2013-08-16T22:01:54.823 に答える