2013-04-20 1 views
1

Ниже приведен простой объект JSON, созданный с использованием Xstream. Это действительный объект JavaScript. Фактически я хочу спросить, как получить доступ к информации первого лица, такой как идентификатор, имя пользователя, пароль и т. Д. Но когда я просматриваю этот файл в браузере, отображаемая веб-страница не показывает «21». Я ожидаю, что страница должна отображать 21.Как извлечь данные из JSON, когда объект JSON является именем не является атомом

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
    <head> 
    <title></title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <script> 
     var obj = {"records":[ 
        {"beans.Person":[ 
         {"id":21,"name":"Name21","username":"Username21","password":"password21","age":41,"sex":true}, 
         {"id":22,"name":"Name22","username":"Username22","password":"password22","age":42,"sex":true}, 
         {"id":23,"name":"Name23","username":"Username23","password":"password23","age":43,"sex":true}, 
         {"id":24,"name":"Name24","username":"Username24","password":"password24","age":44,"sex":true}, 
         {"id":25,"name":"Name25","username":"Username25","password":"password25","age":45,"sex":true}, 
         {"id":26,"name":"Name26","username":"Username26","password":"password26","age":46,"sex":true}, 
         {"id":27,"name":"Name27","username":"Username27","password":"password27","age":47,"sex":true}, 
         {"id":28,"name":"Name28","username":"Username28","password":"password28","age":48,"sex":true}, 
         {"id":29,"name":"Name29","username":"Username29","password":"password29","age":49,"sex":true}, 
         {"id":30,"name":"Name30","username":"Username30","password":"password30","age":50,"sex":true} 
         ] 
        } 
        ] 
        } 

      document.write(obj.records[0].beans.Person[0].id); 
    </script> 
    </head> 
    <body> 

    </body> 
</html> 

Но когда я рассматриваю этот файл в браузере отображается веб-страница не отображается . Я ожидаю, что страница должна отображаться 21.

Вы можете просто скопировать и вставить исходный код и попробовать. Он не отображает . Как я могу получить доступ к этим значениям.

+0

Используйте 'JSON.parse (jsonString)' для преобразования json-строки в объект javascript и используйте индекс для итерации содержимого! – NINCOMPOOP

ответ

5

Ваша проблема является использование "." в идентификаторе "beans.Person" означает, что вы должны указать его, например, так:

obj.records[0]["beans.Person"][0].id 

И избегать использования document.write, если у вас есть веские основания для этого и знать, что вы делаете ,

<div id="result"></div> 

var obj = { 
    "records": [{ 
     "beans.Person": [{ 
      "id": 21, 
      "name": "Name21", 
      "username": "Username21", 
      "password": "password21", 
      "age": 41, 
      "sex": true 
     }, { 
      "id": 22, 
      "name": "Name22", 
      "username": "Username22", 
      "password": "password22", 
      "age": 42, 
      "sex": true 
     }, { 
      "id": 23, 
      "name": "Name23", 
      "username": "Username23", 
      "password": "password23", 
      "age": 43, 
      "sex": true 
     }, { 
      "id": 24, 
      "name": "Name24", 
      "username": "Username24", 
      "password": "password24", 
      "age": 44, 
      "sex": true 
     }, { 
      "id": 25, 
      "name": "Name25", 
      "username": "Username25", 
      "password": "password25", 
      "age": 45, 
      "sex": true 
     }, { 
      "id": 26, 
      "name": "Name26", 
      "username": "Username26", 
      "password": "password26", 
      "age": 46, 
      "sex": true 
     }, { 
      "id": 27, 
      "name": "Name27", 
      "username": "Username27", 
      "password": "password27", 
      "age": 47, 
      "sex": true 
     }, { 
      "id": 28, 
      "name": "Name28", 
      "username": "Username28", 
      "password": "password28", 
      "age": 48, 
      "sex": true 
     }, { 
      "id": 29, 
      "name": "Name29", 
      "username": "Username29", 
      "password": "password29", 
      "age": 49, 
      "sex": true 
     }, { 
      "id": 30, 
      "name": "Name30", 
      "username": "Username30", 
      "password": "password30", 
      "age": 50, 
      "sex": true 
     }] 
    }] 
} 

document.getElementById("result").textContent = obj.records[0]["beans.Person"][0].id; 

на jsfiddle

+0

Thanx много работает – stackOverflow

2

Используйте JSON.parse(), чтобы получить объект javascript из строки JSON. Вы можете получить дополнительную информацию here.

EDIT:

var objectID = obj.records[0]['beans.Person'][0]['id']; 

Хороший читать, Use Square Bracket Notation.

+0

Я уже использую то, что уже приведенный выше пример - образец, который мне интересен, как эти данные. Проще говоря, я прошу синтаксис для доступа к id, имени пользователя, паролю. – stackOverflow

+0

Отредактирован ответ! – NINCOMPOOP

1

попробовать это, я уверен, что он будет работать

document.write(obj.records[0]['beans.Person'][0]['id']); 

проверки консоли, я мелочный, что вы были с ошибками. Он принимает бобы и человек два разных объект

0

Это образец вашего объекта в Back End Код C#

public Class Learner 
{ 
    public string Name {get; set;} 
    public string Surname {get; set;} 
} 

Тогда в JavaScript при чтении объекта из JsonResult

var leanerName = obj[0].Name; 
var leanerSurname = obj[0].Surname; 

Надеется, что это help

Смежные вопросы