解析JSON数据/转换为对象

时间:2014-01-31 21:07:40

标签: jquery

我使用以下函数作为我的应用程序的测试用例:

$(function() {
var json = {
    "people": {
        "person": [{
            "name": "Peter",
            "age": 43,
            "sex": "male"},
        {
            "name": "Zara",
            "age": 65,
            "sex": "female"}]
    }
};
$.each(json.people.person, function(i, v) {
    if (v.name == "Peter") {
        alert(v.age);
        return;
    }
});
});

这只是搜索一组JSON数据以获取静态输入,在这种情况下是名称“Peter”,并返回其“年龄”。我想修改此函数以从文本字段中提取输入并使用它代替静态字符串“Peter”,以便我可以搜索任何名称ID。该功能将从提交按钮调用。

这是我的第一个障碍。

我的第二个想法是在我的应用程序中使用结果的子集作为对象而不是字符串。换句话说,如果我在文本字段中放置一个名称,该函数将在JSON数据中找到该名称,并在这种情况下返回“age”作为对象,然后我可以将其用于工作流程中的其他计算。 / p>

任何人都可以帮我吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您的输入字段名为name,则可以使用以下内容:

var name = $("input[name='name']").val();
$.each(json.people.person, function(i, v){
if(v.name == name){
...

至于您的第二个要求,您只需返回v变量,而不是不返回任何内容并提醒结果。

答案 1 :(得分:1)

我做了一个小提琴,使你需要http://jsfiddle.net/KmYJw/1/

假设您有2个表单字段。 1文字& 1提交

<input name="name" value="" type="text" />
<input value="search in json" type="submit" />

单击“提交”。你需要从文本输入中获取值并在json

中搜索
    var age; // global var

    $("input[type='submit']").click(function() {
        var searchName = $("input[name='name']").val(); // take value of text input 

        $.each(json.people.person, function(i, v) {
            if (v.name == searchName) {
                age = v.age; // attach search age to global var
                return;
            }
        });
        return;
    });