如何将数据转换为JSON

时间:2013-01-25 04:02:46

标签: javascript jquery ajax json

假设我们有一个文件(* .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()创建anna_kournikova和东西,但我真的迷失了创建正确的 JSON “对象”。我会粘贴一些我以前尝试过的更好的例子,但是我把它们全部抹去了,现在又从头开始了,我需要你的建议。我可能会错过一个简单的细节吗?非常感谢!

4 个答案:

答案 0 :(得分:3)

如果您能够更改JSON的标记,这将产生更好的结果,

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

这样你可以使用data.anna_kournikova.age。正如其他用户所建议的那样,您的CSV应该在服务器端进行解析,您可以使用jQuery.getJSON( ... )来检索它

答案 1 :(得分:1)

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

我已将其更改为我认为您的预期格式。

如果您想使用真正的JSON对象,则可能不需要..stringify进行打印。你试图使用一些字符串/数组的混合。

您可以使用括号语法向对象添加元素,但不要将它们视为数组:

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

您不能将大括号语法与键名称的连接/变量结合使用。

答案 2 :(得分:0)

答案 3 :(得分: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");
};