Получение данных References из JSON - PullRequest
0 голосов
/ 30 августа 2011

У меня есть данные JSON в следующем формате

{"updates":
    {"message"   :"[[student:123]] is present."},
     "references":[{"type":"student","full_name":"XYZ","id":123}]
}

Как я могу сопоставить имя студента с сообщением, используя идентификатор, присутствующий в сообщении? Я относительно новичок в разборе JSON. В настоящее время я использую шаблон EJS для манипулирования JSON в HTML.

В том, что только с помощью

<%alert(updates.message.student)%>

возвращает "неопределенное". Пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 30 августа 2011

updates.message - это строка, а не объект JavaScript.Вы можете сказать по кавычкам вокруг всего атрибута.Строки JavaScript не имеют свойства student, поэтому вы получаете undefined.Вы можете проанализировать часть JSON из строки с помощью регулярных выражений, а затем использовать JSON.parse(), чтобы получить объект JSON.Однако в вашем примере идентификатор студента также находится в updates.references[0].id.

Чтобы получить идентификатор студента, выполните следующие действия:

<% alert(updates.references[0].id) %>

edit: действительно хотите получить идентификатор из сообщения, вам нужно как-то разобрать его.Если формат сообщения всегда будет одинаковым, вы можете попробовать регулярное выражение или разбиение строки, чтобы получить часть, содержащую идентификатор.

var id_part = json.updates.message.split(" ")[0];
//parse out just the ID number in a group
var re = /\[\[[^:]+:(\d+)\]\]/;
var matches = re.exec(id_part);
var id = matches[1];

Чтобы затем получить соответствующие данные из части references,вам нужно перебирать, пока не найдете один с id из сообщения.Это будет работать.

//Ghetto old for loop for browser compatibility
for (var i = 0; i < updates.references.length; i++) {
    if (updates.references[i].id == id) {
        //We have found the reference we want.
        //Do stuff with that reference.
        break;
    }
}
0 голосов
/ 30 августа 2011

попробуй

var json = {
    "updates": {
        "message": "[[student:123]] is present."
    },
    "references": [
        {
            "type": "student",
            "full_name": "XYZ",
            "id": 123
        }
    ]
};

alert(json.references[0].full_name);
...