2016-09-20 4 views
0

Я перемещаю данные с выхода функции python в php, а затем преобразовываю его в JSON и отправляю его в функцию javascript, которая вызывает его с помощью AJAX.Удаление дополнительных символов из строки с определенным шаблоном PHP

Формат должен выглядеть следующим образом:

{"data_name" : [1.02, 3.013, -24.12, 39], "data_name_2" : [-0.32151], "data_name_3" : [0.321, -21.42425, 225125.002]} 

Сейчас питон возвращает данные через json.dumps и выход рода странно, как только он достигает PHP. Так как данные уже JSon из Python, json_encode не работает должным образом, но только вторя данные JSON производит это:

"[{\"data_name\" : [[1.02], [3.013], [-24.12], [39]]}, {\"data_name_2\" : -0.32151}, {\"data_name_3\" : [[0.321], [-21.42425], [225125.002]]}, null]" 

Так как я могу сделать следующие вещи?

  1. Удалите первый "[ с начала строки
  2. Удалить все обратные слэши перед кавычками (так \"data_name\" становится "data_name")
  3. Удалить }, { от каждого из полей (кроме первого)
  4. Для 2D-массивов удалите внутренние символы [], так что [[1.02], [2.02]] станет [1.02, 2.02]
  5. Для одиночных номеров добавьте [] вокруг них, так -0.32151 становится [-0.32151]
  6. Наконец, когда я достигаю }, null]", я хочу, чтобы удалить , null]" и просто держать конец }.

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

+1

Правильное исправление для «моих данных закодировано ненадлежащим образом» - это не клонирование при изменении кодированного текста, это либо исправление предварительного кодирования данных, либо пост-декодирование. – Sammitch

+0

Попробуйте следующее: http://stackoverflow.com/a/8635181/3541922 – MikeVelazco

+1

JSON является стандартом, вы должны иметь возможность читать на PHP или любом языке с поддержкой. Проверьте код с обеих сторон. – MikeVelazco

ответ

0

Я согласен с Саммичем.

Быстрое исправление 2. является stripslashes

Для остальных, вы можете быть в состоянии создать шаблоны с preg_replace, которые могут фильтровать правильно, но почему бы не просто изменить выход питона?

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