2015-05-12 3 views
0

Вот мой Json. Это ia ответ dwr (веб-сервис, созданный в java).parse Javascript json в php

{ 
    key1 : { 
    date : "Today" , 
    items : [ 
      { 
      itemKey1 : "itemValue1", 
      itemKey2 : "itemValue2", 
      }, 
      { 
      itemKey1 : "itemValue1", 
      itemKey2 : "itemValue2", 
      }, 
    ] 
    } 
} 

JSON LINT также показывает ошибку.

Если вы видите ключ, у меня не может быть "", поэтому я не могу разобрать его непосредственно на json в php. Есть ли способ, которым можно разобрать его на json, а затем на массив или непосредственно на массив.

Но когда я передаю это этому типу json it. В JSON LINT это показывает, что это правильный json.

{ 
"key1": { 
    "date": "Today", 
    "items": [ 
     { 
      "itemKey1": "itemValue1", 
      "itemKey2": "itemValue2" 
     }, 
     { 
      "itemKey1": "itemValue1", 
      "itemKey2": "itemValue2" 
     } 
    ] 
} 
} 

Так есть в любом случае я могу trasnfer JSON ко второму типу. Динамически в PHP

+0

что ошибка? – Gerton

+0

@Gerton через JSON LINT i get => Ошибка анализа в строке 1: {key1: {date -----^Ожидание 'STRING', '}' –

+0

@Uchiha Это не работает ... !! ! Он ничего не возвращает, .... –

ответ

1

Поскольку в PHP нет встроенного парсера javascript, и у вас есть JAVASCRIPT, а не JSON, ваши единственные варианты - это реализовать собственный анализатор/использовать существующий парсер. ИЛИ прервите свою строку в JSON, это МОЖЕТ быть сделано с чем-то вроде регулярного выражения, хотя оно скорее всего будет шелушащимся.

Для ваших указанных, например, данные, это будет делать:

<?php 
$data = json_decode(preg_replace_callback('#(\S+)\s*:#i', function($matches){ 
    return '"'.$matches[1].'" :'; 
},$str)); 
+0

preg_replace_callback помог мне сделать мою вещь ... –

+0

Но это очень сложно ... не просто ... но это дает мне то, что я хочу .... –