1

次のようなファイル (*.csv、*.txt ...) があるとします。

Name,  Surname,     Age,  Occupation
Gino,  DiNanni,     19,   student
Anna,  Kournikova,  27,   programmer

(ここで読みやすくするために、これらのスペースを追加しました)

次のような JSON を作成しようとしています (BTW は有効です)。

[
    {
        "gino_dinanni": [
            {
                "age": "19",
                "occupation": "student",
            }
        ]
    },
    {
        "anna_kournikova": [
            {
                "age": "27",
                "occupation": "programmer",
            }
        ]
    }
]

例のようにアクセス可能

anna_kournikova.age    // 27

これまでのところ、私はこのhttp://jsbin.com/apapey/2/editを持っていますが、これは私に(ひどく)与えています:

[["Age:19","Occupation:student"],["Age:27","Occupation:programmer"]] 

.toLowerCase()作成などの使用方法は知っていますが、適切なJSON「オブジェクト」anna_kournikovaを作成するのに本当に迷っています。以前に試したより良い例をいくつか貼り付けますが、怒り狂ってそれらをすべて消去し、ゼロからやり直しました。アドバイスが必要です。簡単な詳細が欠けているのでしょうか?本当にありがとう!

4

4 に答える 4

3

JSON のマークアップを変更できる場合は、より良い結果が得られます。

{
    "gino_dinanni": {
        "age": "19",
        "occupation": "student"
    },
    "anna_kournikova": {
        "age": "27",
        "occupation": "programmer"
    }
};

そうすれば使えますdata.anna_kournikova.age。他のユーザーが示唆しているように、CSV はサーバー側で解析する必要があり、jQuery.getJSON( ... )それを取得するために使用できます。

于 2013-01-25T04:16:18.197 に答える
1

http://jsbin.com/ihivuj/2/edit

私はあなたの意図したフォーマットであると私が信じているものに変更しました。

実際の..stringifyJSON オブジェクトを操作する場合は、おそらく印刷には必要ありません。文字列/配列の混合物を操作しようとしていました。

ブラケット構文を使用して要素をオブジェクトに追加できますが、それらを配列として扱わないでください。

arr[oneData[0] + oneData[1]][headers[2]] = oneData[2];

キー名の連結/変数とブレース構文を組み合わせることもできません。

于 2013-01-25T04:17:00.067 に答える
0

このページを見ることができます http://www.cparker15.com/code/utilities/csv-to-json/

Github のプロジェクトはhttps://github.com/cparker15/csv-to-json/issuesです。

于 2013-01-25T04:20:26.650 に答える
0

JavaScriptを使用して、メタプログラミングを試すことができます:)

var json =[{"gino_dinanni": [{"age": "19","occupation": "student",}]},{"anna_kournikova": [{"age": "27","occupation": "programmer",}]}];

document.write(getAge('gino_dinanni'));

function getAge(name){
    return eval("json[0]."+name+"[0].age");
};
于 2013-01-25T05:07:22.043 に答える