1

假设我们有一个文件 (*.csv, *.txt ...),例如:

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

(我添加这些空格只是为了让它在这里可读)

我正在尝试创建一个 JSON(顺便说一句,它是有效的),例如:

[
    {
        "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()来创建anna_kournikova和填充,但我真的迷失在创建正确的JSON “对象”。我会粘贴一些我之前尝试过的更好的例子,但我一怒之下将它们全部删除,现在从头开始,我需要你的建议。可能是我错过了一个简单的细节?非常感谢!

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 回答