[php] JSON 문자열을 배열로 변환하는 방법

내가 원하는 것은 다음과 같습니다.

  1. PHP의 텍스트 영역에서 JSON을 입력으로 가져 오기
  2. 이 입력을 사용하여 JSON으로 변환하고 php curl에 전달하여 요청을 보냅니다.

이 m은 api에서 PHP를 얻습니다.이 json 문자열을 json으로 전달하고 싶지만 배열로 변환하지 않습니다.

echo $str='{
        action : "create",
        record: {
            type: "n$product",
            fields: {
                n$name: "Bread",
                n$price: 2.11
            },
            namespaces: { "my.demo": "n" }
        }
    }';
    $json = json_decode($str, true);

위의 코드는 나에게 배열을 반환하지 않습니다.



답변

게시물의 JSON을에 전달 json_decode하면 실패합니다. 유효한 JSON 문자열에는 따옴표로 묶인 키가 있습니다.

json_decode('{foo:"bar"}');         // this fails
json_decode('{"foo":"bar"}', true); // returns array("foo" => "bar")
json_decode('{"foo":"bar"}');       // returns an object, not an array.


답변

이 시도:

$data = json_decode($your_json_string, TRUE);

두 번째 매개 변수는 디코딩 된 json 문자열을 연관 배열로 만듭니다.


답변

양식에서 JSON 문자열을 얻는 경우 사용 $_REQUEST, $_GET또는 $_POST당신이 기능을 사용해야합니다 html_entity_decode(). var_dump요청에있는 echo내용과 복사 한 내용과 진술을 수행하고 요청 문자열이 훨씬 더 크다는 것을 알기 전까지는 이것을 깨닫지 못했습니다 .

올바른 방법 :

$jsonText = $_REQUEST['myJSON'];
$decodedText = html_entity_decode($jsonText);
$myArray = json_decode($decodedText, true);

오류 있음 :

$jsonText = $_REQUEST['myJSON'];
$myArray = json_decode($jsonText, true);
echo json_last_error(); //Returns 4 - Syntax error;


답변

json_decode($json_string, TRUE)함수를 사용 하여 JSON 개체를 배열로 변환합니다.

예:

$json_string   = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

$my_array_data = json_decode($json_string, TRUE);

참고 : 두 번째 매개 변수는 디코딩 된 JSON 문자열을 연관 배열로 변환합니다.

===========

산출:

var_dump($my_array_data);

array(5) {

    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}


답변

을 사용하여 URL에서 json 문자열을 얻는 경우 file_get_contents다음 단계를 따르십시오.

$url = "http://localhost/rest/users";  //The url from where you are getting the contents
$response = (file_get_contents($url)); //Converting in json string
 $n = strpos($response, "[");
$response = substr_replace($response,"",0,$n+1);
$response = substr_replace($response, "" , -1,1);
print_r(json_decode($response,true));


답변

문자열은 다음 형식이어야합니다.

$str = '{"action": "create","record": {"type": "n$product","fields": {"n$name": "Bread","n$price": 2.11},"namespaces": { "my.demo": "n" }}}';
$array = json_decode($str, true);

echo "<pre>";
print_r($array);

산출:

Array
 (
    [action] => create
    [record] => Array
        (
            [type] => n$product
            [fields] => Array
                (
                    [n$name] => Bread
                    [n$price] => 2.11
                )

            [namespaces] => Array
                (
                    [my.demo] => n
                )

        )

)


답변

json Object를 Array & String으로 변환 할 수 있습니다.

$data='{"resultList":[{"id":"1839","displayName":"Analytics","subLine":""},{"id":"1015","displayName":"Automation","subLine":""},{"id":"1084","displayName":"Aviation","subLine":""},{"id":"554","displayName":"Apparel","subLine":""},{"id":"875","displayName":"Aerospace","subLine":""},{"id":"1990","displayName":"Account Reconciliation","subLine":""},{"id":"3657","displayName":"Android","subLine":""},{"id":"1262","displayName":"Apache","subLine":""},{"id":"1440","displayName":"Acting","subLine":""},{"id":"710","displayName":"Aircraft","subLine":""},{"id":"12187","displayName":"AAC","subLine":""}, {"id":"20365","displayName":"AAT","subLine":""}, {"id":"7849","displayName":"AAP","subLine":""}, {"id":"20511","displayName":"AACR2","subLine":""}, {"id":"28585","displayName":"AASHTO","subLine":""}, {"id":"45191","displayName":"AAMS","subLine":""}]}';

$b=json_decode($data);

$i=0;
while($b->{'resultList'}[$i])
{
    print_r($b->{'resultList'}[$i]->{'displayName'});
    echo "<br />";
    $i++;
}