2016-01-06 2 views
0

В приведенном ниже коде,JSON, не очень хорошо формируется ошибка

<head> 
     <meta charset="UTF-8"> 
     <title>JSON ex</title> 
     <script type = "text/javascript" 
      src = "http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"> 
     </script> 

     <script type="text/javascript" language = "javascript"> 
      var accountGrid = []; 
      $(document).ready(function(){ 
       $.getJSON('result.json', function(entry){ 
        accountGrid.push({ 
         name: entry.name, 
         marketValue: entry.marketValue, 
         cash: entry.cash, 
         legend: entry.legend 
        }); 
       }); 
      }); 
     </script> 
    </head> 
    <body> 

    </body> 

result.json

{ 
    'name': 'Account1', 
    'marketValue': '10990', 
    'cash': '199926', 
    'legend': 'orange' 
}, 
{ 
    'name': 'Account2', 
    'marketValue': '156590', 
    'cash': '133856', 
    'legend': 'darkorange' 
} 

Я вижу JSON not well formed ошибку. result.json находится в одной папке.

Из-за этой ошибки accountGrid пуст.

Что это означает? not well formed Ошибка при исполнении jQuery.getJSON?

+2

Для проверки вашего JSON существуют онлайн-проверки, которые вы можете использовать. – Drumbeg

ответ

6

Давайте рассмотрим grammar of JSON ...

JSON должен быть только одно значение (объект, массив и т.д.)

JSON объект должен быть только одно значение. У вас есть два объекта, разделенных запятой. Возможно, вы могли бы назначить каждый из них как членов одного объекта.

# a JSON object consists of a single value definition 
value 
    string 
    number 
    object 
    array 
    true 
    false 
    null 

# this value can be an object 
object 
    {} 
    { members } 

# or an array 
array 
    [] 
    [ elements ] 

______

Single-кавычки являются незаконными

JSON запрещает использование одиночных кавычек (') для строк.

# a string consists of chars wrapped in double-quotation marks 
string 
    "" 
    " chars " 

Таким образом, замените все одинарные кавычки на двойные кавычки.

Эти два обстоятельства, вы будете в конечном итоге с чем-то вроде этого:

{ 
    "key1": { 
     "name": "Brokerage Account 3", 
     "marketValue": "1999990", 
     "cash": "1995826", 
     "legend": "orange" 
    }, 
    "key2": { 
     "name": "Account 3", 
     "marketValue": "1949990", 
     "cash": "1695856", 
     "legend": "darkorange" 
    } 
} 

[Try it out online]

______

Место объекты в пределах массива

В качестве альтернативы , как предложил @Gerald Schneider, поместите объекты в массив.Спецификация говорит, что value (определено выше) может быть array:

array 
    [] 
    [ elements ] # elements can multiple values, e.g. objects 

Так что ваш JSON будет выглядеть следующим образом:

[ 
    { 
     "name": "Account1", 
     "marketValue": "10990", 
     "cash": "199926", 
     "legend": "orange" 
    }, 
    { 
     "name": "Account2", 
     "marketValue": "156590", 
     "cash": "133856", 
     "legend": "darkorange" 
    } 
] 

[Try it out online]

______

Потребляя разобранный JSON (где JSON является массивом)

Если вы представляете ваши данные в виде массива, ваш обратный вызов должен просто присвоить полученный разобранный JSON к accountGrid переменным:

<script type="text/javascript" language = "javascript"> 
    var accountGrid = []; 
    $(document).ready(function(){ 
     $.getJSON('result.json', function(entry){ 
      accountGrid = entry; 
     }); 
    }); 
</script> 

В качестве альтернативы, если вы хотите добавить значение входа в accountGrid:

accountGrid = accountGrid.concat(entry); 

______

написание JSON в будущем

Я предлагаю вам редактировать файлы JSON в среде IDE, которая поддерживает подсветку синтаксиса для JSON, тогда эти проблемы будут возникать в редакторе. Или, use one of the many online tools available.

+2

Лично я просто сделал бы это массив, включив его в '[]'. Легче контактировать. –

+0

Я получаю синтаксическую ошибку в строке 1: 1 с синтаксисом массива – overexchange

+0

[Попробуйте здесь] (http://www.jsoneditoronline.org/?id=572498b110113540bd833c1e3de7fed0). – sdgluck

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