json декодируют в php

Почему Вы пытаетесь узнать, был ли модуль включен из командной строки? Есть ли некоторая ситуация, которую Вы имеете, где она имеет значение? Вы делаете что-то нечетное с импортом? Скажите нам, что Вы пытаетесь сделать, и я могу, вероятно, придумать лучший способ сделать это :)

Хорошо, Вы спрашиваете об экспорте. Какова проблема, которую Вы пытаетесь решить? Какой путь Вы хотите это? Дополнительный или меньше значения по умолчанию экспортирует из командной строки? Вы знаете, что можно указать список импорта с-M, включая тег экспорта (так, что-то от %EXPORT_TAGS)? И если Вы хотите пустой список экспорта, можно использовать-m (нижний регистр m) вместо этого. Посмотрите запись для-M/-m в perlrun.

Вы могли бы также интересоваться приемом "modulino", где файл модуля может быть и модулем и сценарием. Можно или использовать его в качестве регулярного модуля, в этом случае Вы имеете доступ ко всем его методам или называете его как сценарий, в этом случае это работает. Я описываю это в моем "Сценарии как Модули" статья для , Журнал а также , Perl, "Как Сценарий Становится Модулем" на Perlmonks.

6
задан Programmer Bruce 17 June 2011 в 16:32
поделиться

4 ответа

Еще один поворот в том, как inerte сделал это, - это получить к нему доступ, например:

$json_object = '{"communications":
                       {"communication":
                         [{"@array":"true","@id":"23101384","@uri":"xyz/v1/Communications/1111","household":
                            {"@id":"111111","@uri":"xyz/v1/Households/5465465"},
                            "person": {"@id":"","@uri":""},
                            "communicationType":{"@id":"1","@uri":"xyz/v1/Communications/CommunicationTypes/1","name":"Home Phone"},
                            "communicationGeneralType":"Telephone","communicationValue":"1111","searchCommunicationValue":"2693240758",
                               "listed":"true","communicationComment":null,"createdDate":"2008-11-10T12:31:26","lastUpdatedDate":"2009-08-11T23:40:02"},
                            {"@array":"true","@id":"11111","@uri":"xyz/v1/Communications/111111111","household":
                              {"@id":"14436295","@uri":"xyz/v1/Households/11111"},
                            "person": {"@id":"2222222","@uri":"xyz/v1/People/22222222"},
                            "communicationType": {"@id":"2","@uri":"xyz/v1/Communications/CommunicationTypes/2","name":"Work Phone"},
                            "communicationGeneralType":"Telephone","communicationValue":"11111","searchCommunicationValue":"789787987","listed":"false",
                                "communicationComment":null,"createdDate":"2009-08-09T15:49:27","lastUpdatedDate":"2009-08-11T23:40:02"},
                            {"@array":"true","@id":"11111","@uri":"xyz/v1/Communications/11111","household": {"@id":"1111","@uri":"xyz/v1/Households/1111"},
                            "person":{"@id":"244404","@uri":"xyz/v1/People/1111"},
                            "communicationType":{"@id":"3","@uri":"xyz/v1/Communications/CommunicationTypes/3","name":"Mobile"},
                            "communicationGeneralType":"Telephone","communicationValue":"22222","searchCommunicationValue":"5475454","listed":"true",
                                "communicationComment":null,"createdDate":"2008-11-10T12:31:26","lastUpdatedDate":"2009-08-11T23:40:02"},
                            {"@array":"true","@id":"15454","@uri":"xyz/v1/Communications/111111","household":{"@id":"14436295","@uri":"xyz/v1/Households/1111"},
                            "person":{"@id":"244444474","@uri":"xyz/v1/People/111111"},
                            "communicationType":{"@id":"4","@uri":"xyz/v1/Communications/CommunicationTypes/4","name":"Email"},
                            "communicationGeneralType":"Email","communicationValue":"email@needthis.com","searchCommunicationValue":"email@needthis.com","listed":"true",
                            "communicationComment":null,"createdDate":"2008-11-10T12:31:26","lastUpdatedDate":"2009-08-11T23:39:06"}
                         ]
                       }
                      }';


    $json_decoded = json_decode($json_object);
    echo "email: ".$json_decoded->communications->communication[3]->communicationValue."<br />";
8
ответ дан 8 December 2019 в 03:40
поделиться

Учитывая, что у вас есть json_decode d, вы данные таким образом:

$data = json_decode($json);

Вы можете использовать var_dump (ну, вывод выглядит лучше, если использовать с расширение Xdebug , которое неплохо иметь на машине разработки, кстати) , чтобы знать, что находится в ваших данных:

// Allows you to know what's in the data ;-)
var_dump($data);

Вы получите что-то вроде этого:

object(stdClass)[1]
  public 'communications' => 
    object(stdClass)[2]
      public 'communication' => 
        array
          0 => 
            object(stdClass)[3]
              public '@array' => string 'true' (length=4)
              public '@id' => string '23101384' (length=8)
              public '@uri' => string 'xyz/v1/Communications/1111' (length=26)
              public 'household' => 
                object(stdClass)[4]
                  public '@id' => string '111111' (length=6)
                  public '@uri' => string 'xyz/v1/Households/5465465' (length=25)
              public 'person' => 
                object(stdClass)[5]
                  public '@id' => string '' (length=0)
                  public '@uri' => string '' (length=0)
              public 'communicationType' => 
                object(stdClass)[6]
                  public '@id' => string '1' (length=1)
                  public '@uri' => string 'xyz/v1/Communications/CommunicationTypes/1' (length=42)
                  public 'name' => string 'Home Phone' (length=10)
              public 'communicationGeneralType' => string 'Telephone' (length=9)
              public 'communicationValue' => string '1111' (length=4)
              public 'searchCommunicationValue' => string '2693240758' (length=10)
              public 'listed' => string 'true' (length=4)
              public 'communicationComment' => null
              public 'createdDate' => string '2008-11-10T12:31:26' (length=19)
              public 'lastUpdatedDate' => string '2009-08-11T23:40:02' (length=19)
          1 => 
            object(stdClass)[7]
              public '@array' => string 'true' (length=4)
              public '@id' => string '11111' (length=5)
              public '@uri' => string 'xyz/v1/Communications/111111111' (length=31)
              public 'household' => 
                object(stdClass)[8]
                  public '@id' => string '14436295' (length=8)
                  public '@uri' => string 'xyz/v1/Households/11111' (length=23)
              public 'person' => 
                object(stdClass)[9]
                  public '@id' => string '2222222' (length=7)
                  public '@uri' => string 'xyz/v1/People/22222222' (length=22)
              public 'communicationType' => 
                object(stdClass)[10]
                  public '@id' => string '2' (length=1)
                  public '@uri' => string 'xyz/v1/Communications/CommunicationTypes/2' (length=42)
                  public 'name' => string 'Work Phone' (length=10)
              public 'communicationGeneralType' => string 'Telephone' (length=9)
              public 'communicationValue' => string '11111' (length=5)
              public 'searchCommunicationValue' => string '789787987' (length=9)
              public 'listed' => string 'false' (length=5)
              public 'communicationComment' => null
              public 'createdDate' => string '2009-08-09T15:49:27' (length=19)
              public 'lastUpdatedDate' => string '2009-08-11T23:40:02' (length=19)
          2 => 
            object(stdClass)[11]
              public '@array' => string 'true' (length=4)
              public '@id' => string '11111' (length=5)
              public '@uri' => string 'xyz/v1/Communications/11111' (length=27)
              public 'household' => 
                object(stdClass)[12]
                  public '@id' => string '1111' (length=4)
                  public '@uri' => string 'xyz/v1/Households/1111' (length=22)
              public 'person' => 
                object(stdClass)[13]
                  public '@id' => string '244404' (length=6)
                  public '@uri' => string 'xyz/v1/People/1111' (length=18)
              public 'communicationType' => 
                object(stdClass)[14]
                  public '@id' => string '3' (length=1)
                  public '@uri' => string 'xyz/v1/Communications/CommunicationTypes/3' (length=42)
                  public 'name' => string 'Mobile' (length=6)
              public 'communicationGeneralType' => string 'Telephone' (length=9)
              public 'communicationValue' => string '22222' (length=5)
              public 'searchCommunicationValue' => string '5475454' (length=7)
              public 'listed' => string 'true' (length=4)
              public 'communicationComment' => null
              public 'createdDate' => string '2008-11-10T12:31:26' (length=19)
              public 'lastUpdatedDate' => string '2009-08-11T23:40:02' (length=19)
          3 => 
            object(stdClass)[15]
              public '@array' => string 'true' (length=4)
              public '@id' => string '15454' (length=5)
              public '@uri' => string 'xyz/v1/Communications/111111' (length=28)
              public 'household' => 
                object(stdClass)[16]
                  public '@id' => string '14436295' (length=8)
                  public '@uri' => string 'xyz/v1/Households/1111' (length=22)
              public 'person' => 
                object(stdClass)[17]
                  public '@id' => string '244444474' (length=9)
                  public '@uri' => string 'xyz/v1/People/111111' (length=20)
              public 'communicationType' => 
                object(stdClass)[18]
                  public '@id' => string '4' (length=1)
                  public '@uri' => string 'xyz/v1/Communications/CommunicationTypes/4' (length=42)
                  public 'name' => string 'Email' (length=5)
              public 'communicationGeneralType' => string 'Email' (length=5)
              public 'communicationValue' => string 'email@needthis.com' (length=18)
              public 'searchCommunicationValue' => string 'email@needthis.com' (length=18)
              public 'listed' => string 'true' (length=4)
              public 'communicationComment' => null
              public 'createdDate' => string '2008-11-10T12:31:26' (length=19)
              public 'lastUpdatedDate' => string '2009-08-11T23:39:06' (length=19)

Это означает, что вы должны получить доступ к искомым данным примерно так:

foreach ($data->communications->communication as $communication) {
    if ($communication->communicationGeneralType == 'Email') {
        var_dump($communication->communicationValue);
        var_dump($communication->searchCommunicationValue);
    }
}

Что даст вам:

string 'email@needthis.com' (length=18)
string 'email@needthis.com' (length=18)

« коммуникации » - это объект, содержащий « сообщение ", который представляет собой массив объектов, каждый из которых содержит communicationGeneralType , который позволяет определить, является ли текущее сообщение электронной почтой или нет.

Когда это так,вы можете использовать поля communicationValue или searchCommunicationValue .

И я действительно не вижу способа сделать это без итерации по каждому элементу связи .. .

Надеюсь, это поможет!

14
ответ дан 8 December 2019 в 03:40
поделиться

Вы можете использовать json_decode () . Строка из вашего примера сейчас немного сложна для меня, но в качестве собственного примера:

$json = '{"a":"apples","b":["bananas","boysenberries"],"c":"carrots"}';

$arr = json_decode($json);
echo $arr['a']; // "apples"
echo $arr['b'][0]; // "bananas"
6
ответ дан 8 December 2019 в 03:40
поделиться
<?php
$string = '{"communications":{"communication":[{"@array":"true","@id":"23101384","@uri":"xyz/v1/Communications/1111","household":{"@id":"111111","@uri":"xyz/v1/Households/5465465"},"person":{"@id":"","@uri":""},"communicationType":{"@id":"1","@uri":"xyz/v1/Communications/CommunicationTypes/1","name":"Home Phone"},"communicationGeneralType":"Telephone","communicationValue":"1111","searchCommunicationValue":"2693240758","listed":"true","communicationComment":null,"createdDate":"2008-11-10T12:31:26","lastUpdatedDate":"2009-08-11T23:40:02"},{"@array":"true","@id":"11111","@uri":"xyz/v1/Communications/111111111","household":{"@id":"14436295","@uri":"xyz/v1/Households/11111"},"person":{"@id":"2222222","@uri":"xyz/v1/People/22222222"},"communicationType":{"@id":"2","@uri":"xyz/v1/Communications/CommunicationTypes/2","name":"Work Phone"},"communicationGeneralType":"Telephone","communicationValue":"11111","searchCommunicationValue":"789787987","listed":"false","communicationComment":null,"createdDate":"2009-08-09T15:49:27","lastUpdatedDate":"2009-08-11T23:40:02"},{"@array":"true","@id":"11111","@uri":"xyz/v1/Communications/11111","household":{"@id":"1111","@uri":"xyz/v1/Households/1111"},"person":{"@id":"244404","@uri":"xyz/v1/People/1111"},"communicationType":{"@id":"3","@uri":"xyz/v1/Communications/CommunicationTypes/3","name":"Mobile"},"communicationGeneralType":"Telephone","communicationValue":"22222","searchCommunicationValue":"5475454","listed":"true","communicationComment":null,"createdDate":"2008-11-10T12:31:26","lastUpdatedDate":"2009-08-11T23:40:02"},{"@array":"true","@id":"15454","@uri":"xyz/v1/Communications/111111","household":{"@id":"14436295","@uri":"xyz/v1/Households/1111"},"person":{"@id":"244444474","@uri":"xyz/v1/People/111111"},"communicationType":{"@id":"4","@uri":"xyz/v1/Communications/CommunicationTypes/4","name":"Email"},"communicationGeneralType":"Email","communicationValue":"email@needthis.com","searchCommunicationValue":"email@needthis.com","listed":"true","communicationComment":null,"createdDate":"2008-11-10T12:31:26","lastUpdatedDate":"2009-08-11T23:39:06"}]}}';

$encoded = json_decode($string, JSON_FORCE_OBJECT);

echo $encoded['communications']['communication'][3]['communicationValue'];

echo "\n";

echo $encoded['communications']['communication'][3]['searchCommunicationValue'];

?>

Но если communicationValue или searchCommunicationValue когда-нибудь выйдет индекса 3 сообщения , у вас проблемы. Вероятно, вам придется зациклить связь и искать эти строки по его ключам / значениям.

0
ответ дан 8 December 2019 в 03:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: