Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 6
1

Не могу вывести выборочные данные с JSON

04.12.2014, 23:02. Показов 1771. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте !
Не хотел создавать новую тему, но пришлось.
Помогите решить вопрос, уже задолбался. Скажу сразу, что я в этом полный…, но очень нужно
Есть файл (minimum.repl) на локальном сервере с Json данными с расширением (.repl). Из него нужно вытащить некоторые данные.

1) Здесь работает и полностью выводит все содержимое:
PHP
1
2
$decode = file_get_contents('http://мойсайт.ru/minimum.repl');
echo $decode;
2) Также работает и вытаскиваю то, что нужно (email@email.com Синий), если вставляю в код содержимое файла
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$decode = '
{                                          
  "orderID": 12345,                        
  "playerName": "My Name",             
  "Email": "email@email.com", 
  "contents": [                            
    {                                      
      "productID": 34,                     
      "productColor": "Зеленый",        
      "productDate": 23                       
    },                                     
    {                                      
      "productID": 34,                     
      "productColor": "Синий",        
      "productDate": 55                        
    }                                      
  ],                                       
  "Completed": 555                   
}                                          
';
$cart = json_decode($decode);
echo $cart->Email . "<br>";
echo $cart->contents[1]->productColor . "<br>";
3) Теперь пробую сделать тоже самое с файлом и вот тут у меня засада
PHP
1
2
3
4
$decode = file_get_contents ('http://мойсайт.ru/minimum.repl');
$cart = json_decode($decode);
echo $cart->Email . "<br>";
echo $cart->contents[1]->productColor . "<br>";
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2014, 23:02
Ответы с готовыми решениями:

Не могу достать нужные данные из Json
Всем доброго времени суток) Помогите пожалуйста вывести нужные данные из Json. Мой код: ...

печать с листа выборочные данные
Помогите чайнику, плиз, подскажите как решить: Есть таблица из 165 столбцов. Нужно вывести на...

Отобразить выборочные данные с сайта в форме
Уважаемые админы и форумчане. Мне необходим Ваш совет: как отобразить выборочно информацию с сайта...

хранить выборочные данные Checkbox, Не понимаю логику
Добрый день всем вот возник у меня такая проблема index.php &lt;form id=&quot;form1&quot; name=&quot;form1&quot;...

6
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
05.12.2014, 11:42 2
Sergey_555, всё работает. Специально сейчас проверил. Вы наверное в файл вписываете некорректный json. Либо у Вас на хостинге отключена возможность загружать данные с удалённых адресов.
В таком случае попробуйте так (если файл лежит на Вашем хостинге):
PHP
1
file_get_contents ('minimum.repl')
0
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 6
06.12.2014, 00:55  [ТС] 3
Спасибо, проблема вроде решилась.
Код проверял http://json.parser.online.fr/, проблема была с самим файлом, пересоздал еще раз.

Добавлено через 1 час 0 минут
Может поможете в следующем ?

В самом начале файла разные символы другой кодировки (12 штук), решил таким способом:
PHP
1
2
3
$string = file_get_contents ('http://мой сайт.ru/555.repl');
$string = substr($string, 12);
$data = json_decode.......

Содержимое файла имеет следующую структуру (в самом начале разные символы другой кодировки от которых я избавился):

JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{это нормальная часть 1
   "firstName": "Иван",
   "lastName": "Иванов",
   "address": {
       "streetAddress": "Московское ш., 101, кв.101",
       "city": "Ленинград",
       "postalCode": 101101
   },
   "phoneNumbers": [
       "812 123-1234",
       "916 123-4567"
   ]
}
·   это непонятные разделители с пробелами
{нормальная часть 2}
,  это непонятные разделители с пробелами
{нормальная часть 3}
,  это непонятные разделители с пробелами
ненужные символы другой кодировки в огромном количестве
Как мне взять только одну из частей, чтобы в дальнейшем получить из нее данные ?
Или как убрать ненужное содержимое в конце файла и разделители частей, далее указать, что там не одна часть?
В результате чего я получил бы возможность декодировать их и получить из них некоторые данные.
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
06.12.2014, 08:44 4
Цитата Сообщение от Sergey_555 Посмотреть сообщение
В самом начале файла разные символы другой кодировки
Откуда они берутся? Зачем Вы их в файл записываете?
Цитата Сообщение от Sergey_555 Посмотреть сообщение
Содержимое файла имеет следующую структуру
А что это за части такие? Вы пишете в файл разные, закодированные в json, данные?
0
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 6
07.12.2014, 15:44  [ТС] 5
Цитата Сообщение от lyod Посмотреть сообщение
Откуда они берутся? Зачем Вы их в файл записываете?
А что это за части такие? Вы пишете в файл разные, закодированные в json, данные?
Файл изначально имеет такую структуру. Мне необходимо убрать все лишнее и привести его в читаемый код JSON, чтобы затем вытянуть из него нужные данные.

Примерно так:









Последовательность
  1. Просто отсек в начале первые 12 символов и вставил {"chast_1": (Уже сделал)
  2. Второй и третий разделитель отличаются количеством фигурных
    скобок впереди , поэтому не придумал ничего лучше как:
    a) нахожу все по }, { и заменяю на },"chast_2":{ (Уже сделал)
    б) нахожу все по }},"chast_2":{ и заменяю на }},"chast_3":{ (Ща попробую)

    Осталось собственно два вопроса (если все прокатит):

  3. Как-то вычислить первый разделитель. Можно ли найти совпадение }{ с учетом, что между фигурными скобками 5 символов ?
  4. Как обрезать хвост ? Определить его можно по }}] ?


P.S.: Возникла еще ода проблема, связанная со вторым пунктом. Находит вариант в котором ничего менять не надо ( .......83}, {"bonusCount": ....... ) .
Видать при совпадении нужно дополнительно брать еще штук 5 последующих символов и сверять с }, {"bonus , если не совпадают, то менять.
Или поступить как в пункте 2б, нахожу все по },"chast_2":{"bonusCount": и заменяю назад как было }, {"bonusCount": ?

Добавлено через 9 часов 37 минут
Так, с хвостом разобрался.

Подскажите как найти первый разделитель }{ с учетом, что между фигурными скобками 5 символов.
Есть ли в PHP какой-то символ (не знаю как правильно сказать), который подразумевает, что под ним находится любой из символов.
Как игра в слова, например под * может быть любая буква К*Т (КОТ, КИТ)

Сори за белиберду.
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
07.12.2014, 17:08 6
Sergey_555, ну в регулярных выражениях можно было бы сделать так:
Код
[^{]*
Т.е. буквальный перевод:
Исключая { любое количество символов.
0
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 6
08.12.2014, 21:30  [ТС] 7
Цитата Сообщение от lyod Посмотреть сообщение
ну в регулярных выражениях можно было бы сделать так:
Код
[^{]*
Т.е. буквальный перевод:
Исключая { любое количество символов.
Как-то не сложилось у меня с этим, как ... на новые ворота смотрю, не могу разобраться.
Сделал по другому, правда криво.
Нашел позицию нужного вхождения stripos() от него и скакал, получил начало второй части, нашел конечную позицию первой части. Это позволило воспользоваться substr(), затем объединил первую и вторую часть, вставив между ними нужное.
Наверняка есть способ намного проще.

Добавлено через 20 часов 34 минуты
Спасибо !
Вроде все работает и проверку http://json.parser.online.fr/ проходит.
0
08.12.2014, 21:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2014, 21:30
Помогаю со студенческими работами здесь

Добавить выборочные данные в таблицу из другой таблицы
Здравствуйте. нужна помощь специалистов. Имеется две таблицы 1 и 2 в них имеются одинаковые...

Вывести данные из JSON ответа
Всем привет:), нужна помощь, буду очень благодарен, если поможете. Мне нужно, чтобы вывелся...

Вывести данные с json в таблицу
Привет всем, помогите как вывести данные с json в таблицу как на рисунке, а то я уже все сделал а...

Вывести данные из JSON на страницу
Всем привет! Имеется JSON с такими данными. Как содержимое из stats вывести на страницу с помощью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru