Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Parsing json format in PHP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Convert json to text
Jonsnow
Отправлено: 03 Сентября, 2019 - 15:08:39
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Авг. 2019  


Помог: 0 раз(а)




Vsem privet, stolknulsia s problemoj vo vremia parsinga json file:
CODE (html):
скопировать код в буфер обмена
  1. {
  2.     "result": {
  3.         "subject": {
  4.             "name": "Test",
  5.             "number": "241413432",
  6.             "representatives": [],
  7.              "accountNumbers": [
  8.                 "12321321321321321",
  9.                 "12423423423432423"
  10.               ]
  11.             }
  12.       }
  13. }



Vot kod PHP:

PHP:
скопировать код в буфер обмена
  1. $obj = json_decode($data);
  2. echo $obj ->result->subject->name."<br>";
  3. echo $obj ->result->subject->number."<br>";
  4. echo $obj ->result->subject->representatives."<br>";
  5. echo $obj ->result->subject->accountNumbers."<br>";
  6.  


Wywod:

PHP:
скопировать код в буфер обмена
  1. Notice: Array to string conversion in C:\xampp\htdocs\dashboard\test\testtest.php on line 35
  2. Notice: Array to string conversion in C:\xampp\htdocs\dashboard\test\testtest.php on line 36
 
 Top
Строитель Модератор
Отправлено: 03 Сентября, 2019 - 15:35:11
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Jonsnow
PHP:
скопировать код в буфер обмена
  1. $data = '{
  2.    "result": {
  3.        "subject": {
  4.            "name": "Test",
  5.            "number": "241413432",
  6.            "representatives": [],
  7.             "accountNumbers": [
  8.                "12321321321321321",
  9.                "12423423423432423"
  10.              ]
  11.            }
  12.      }
  13. }';
  14.  
  15. $obj = json_decode($data);
  16.  
  17. echo $obj->result->subject->name . "<br>";
  18. echo $obj->result->subject->number . "<br>";
  19. echo $obj->result->subject->representatives . "<br>";
  20.  
  21. echo join('<br>', $obj->result->subject->accountNumbers);
 
 Top
Jonsnow
Отправлено: 03 Сентября, 2019 - 16:41:06
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Авг. 2019  


Помог: 0 раз(а)




Строитель пишет:
Jonsnow


Eshe pojavilas' problema:

Pri insert w bazu danych :
PHP:
скопировать код в буфер обмена
  1.  
  2.  $name = $obj ->result->subject->name;
  3.  $nip = $obj ->result->subject->number;
  4.  $representatives =  join(' ' ,$obj ->result->subject->representatives);
  5.  $accountNumbers = join(' ', $obj ->result->subject->accountNumbers)
  6. ;
  7. $tsql = $conn->prepare("INSERT INTO test
  8.                                                     ( [name],
  9.                                                       [number],
  10.                                                      [representatives],
  11.                                                      [accountNumbers])
  12. VALUES (:name, : number , :representatives , :accountNumbers);");
  13. $tsql->bindParam(':name',$name);
  14. $tsql->bindParam(':number',$number);
  15. $tsql->bindParam(':representatives',$representatives);
  16. $tsql->bindParam(':accountNumbers',$accountNumbers);
  17.  
  18. $tsql->execute();



OShibka:
PHP:
скопировать код в буфер обмена
  1.  
  2. Fatal error: Uncaught PDOException: SQLSTATE[42000]: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]String or binary data would be truncated in table 'testing.dbo.test', column 'accountNumbers'. Truncated value: '12321321321321321, 12423423423432423'. in C:\xampp\htdocs\dashboard\test\testtest.php:143 Stack trace: #0 C:\xampp\htdocs\dashboard\test\testtest.php(143): PDOStatement->execute() #1 {main} thrown in C:\xampp\htdocs\dashboard\test\testtest.php on line 143


Prosu pomogite golovu lomau
Nuzno kak-to multi insert ili czto sdelat'?
 
 Top
LIME
Отправлено: 03 Сентября, 2019 - 22:32:39
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




А какого типа колонка accountNumbers?
(Добавление)
Обратите внимание на длину
 
 Top
Jonsnow
Отправлено: 04 Сентября, 2019 - 07:43:48
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Авг. 2019  


Помог: 0 раз(а)




Varchar (200)
 
 Top
LIME
Отправлено: 04 Сентября, 2019 - 11:36:54
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Как узнал? Похоже что нет. Похоже что не помещается
(Добавление)
Смени длину на заведомо большую
 
 Top
Jonsnow
Отправлено: 04 Сентября, 2019 - 16:03:21
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Авг. 2019  


Помог: 0 раз(а)




LIME пишет:
Как узнал? Похоже что нет. Похоже что не помещается
(Добавление)
Смени длину на заведомо большую


Da smenil. i Zarabotalo.
A jesli delat' tak

PHP:
скопировать код в буфер обмена
  1. $accountNumbers = $obj['result']['subject']['accountNumbers'];


To wychodit takaja oshibka:
PHP:
скопировать код в буфер обмена
  1. Notice: Array to string conversion in C:\xampp\htdocs\dashboard\biala_ksiaga_vat\test\testtest.php on line 146


I w bazu danych prosto wstawliaetsia
Array

Mozet kakto mozna isprawit'?
 
 Top
LIME
Отправлено: 04 Сентября, 2019 - 16:10:54
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Jonsnow совсем думать отказываешься? Тебе строитель уже дал решение.
Ты бы сам на месте пыха как бы массив в строку переводил? Через запятую? Может пробел? Вот и он не знает как его в строку превращать
 
 Top
Jonsnow
Отправлено: 04 Сентября, 2019 - 16:15:21
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Авг. 2019  


Помог: 0 раз(а)




LIME пишет:
Jonsnow совсем думать отказываешься? Тебе строитель уже дал решение.
Ты бы сам на месте пыха как бы массив в строку переводил? Через запятую? Может пробел? Вот и он не знает как его в строку превращать



Izvinite pojalujsta ploho razrisowal situaci10
Pojavilsia nowij format jsona:

PHP:
скопировать код в буфер обмена
  1.  
  2. {
  3.    "result": {
  4.        "subject": {
  5.            "name": "Test",
  6.            "number": "241413432",
  7.            "representatives": [],
  8.            "partners": [
  9.                 {
  10.                     "name": "test",
  11.                     "firstName": null,
  12.                     "lastName": null
  13.                 }
  14.             ],
  15.             "accountNumbers": [
  16.                "12321321321321321",
  17.                "12423423423432423"
  18.              ]
  19.            }
  20.      }
  21. }



Kogda polzu10s'

PHP:
скопировать код в буфер обмена
  1. $partners = join(', ', $obj ->result->subject->partners->name);


To NULL wstawliaetsia.

a kogda

PHP:
скопировать код в буфер обмена
  1. $partners = $obj['result']['subject']['partners'][0]['name']


To wstawliaetsia, no jesli etim sposobom to accountNumbers nie wstawliaetsa=)
Spasibo za ponimanie

(Отредактировано автором: 04 Сентября, 2019 - 16:15:54)

 
 Top
Строитель Модератор
Отправлено: 04 Сентября, 2019 - 17:50:29
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Jonsnow пишет:
Kogda polzu10s'
PHP:
скопировать код в буфер обмена
  1. $partners = join(', ', $obj ->result->subject->partners->name);
To NULL wstawliaetsia.
Дак вы не правильно обращаетесь к элементам - надо так:
PHP:
скопировать код в буфер обмена
  1. echo $obj->result->subject->partners[0]->name;
 
 Top
LIME
Отправлено: 04 Сентября, 2019 - 17:52:23
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Да и так не надо - элемента может не оказаться.
 
 Top
armancho7777777 Супермодератор
Отправлено: 05 Сентября, 2019 - 09:00:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




PHP:
скопировать код в буфер обмена
  1. $partners = array_map(function($partner){
  2.     return $partner->name;
  3. }, $obj->result->subject->partners);
  4. $partners = join(', ', $partners);
 
 Top
Jonsnow
Отправлено: 05 Сентября, 2019 - 11:19:35
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Авг. 2019  


Помог: 0 раз(а)




armancho7777777 пишет:
PHP:
скопировать код в буфер обмена
  1. $partners = array_map(function($partner){
  2.     return $partner->name;
  3. }, $obj->result->subject->partners);
  4. $partners = join(', ', $partners);



Spasibo bolshoje rabotaet, no dla odnogo recorda. Jesli vot takoj json
PHP:
скопировать код в буфер обмена
  1. {
  2.     "result": {
  3.         "subject": {
  4.  
  5. "partners": [
  6.                 {
  7.                     "name": "Firm",
  8.                     "firstName": "Ivan",
  9.                     "lastName": "Petro",
  10.                     "pesel": "215423512"
  11.                 },
  12.                 {
  13.                     "name": "Organizt",
  14.                     "firstName": "Wear",
  15.                     "lastName": "Bubl",
  16.                     "pesel": null
  17.                 }]
  18. }
  19. }


Probowal tak:
PHP:
скопировать код в буфер обмена
  1.  
  2. $partners = array_map(function($partner){
  3.         $a = $partner->name;
  4.         $b = $partner->firstName;
  5.         $d = $partner->lastName;
  6.         $g = $partner->pesel;
  7.         $c = $a + $b + $d +$g;
  8.     return $c;
  9. }, $obj->result->subject->partners);
  10. $partners = join(', ', $partners);

I raznymi sposobami, no vserawno tolko odno dobawliaetsia

S Uwazeniem

(Отредактировано автором: 05 Сентября, 2019 - 11:20:23)

 
 Top
armancho7777777 Супермодератор
Отправлено: 06 Сентября, 2019 - 08:05:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




 
 Top
Jonsnow
Отправлено: 23 Сентября, 2019 - 12:18:05
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Авг. 2019  


Помог: 0 раз(а)




Vsem Privet jesio raz, izvinite, no imejetsia problemka takogo haraktera:

CODE (PHP):
скопировать код в буфер обмена
  1. {
  2.     "result": {
  3.         "subjects": [
  4.             {
  5.                 "partners": [
  6.                 {
  7.                     "companyName": null,
  8.                     "firstName": "VLADIMIR",
  9.                     "lastName": "TAPOV"
  10.                 }
  11.             ],
  12.                 "registrationLegalDate": "2012-08-13",
  13.                 "accountNumbers": [
  14.                     "45423534554353453453453"
  15.                 ],
  16.                 "hasVirtualAccounts": false
  17.             }
  18.         ],
  19.         "Id": "m8e2134"
  20.     }
  21. }


probowal tak, no wstawliaetsia Array.

PHP:
скопировать код в буфер обмена
  1.         @$accountNumbers = array_map(function($accountNumbers0)
  2.         {
  3.             return $accountNumbers0->accountNumbers;
  4.         }, @$obj->result->subjects);
  5.         @$accountNumbers = join(', ', $accountNumbers);


Problema w dwojnom massivie, ponimau, no kak isprawit'?

Jesli kto-to znajet, to pojalusta pomogite=)

izvinite za translit
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB