কীভাবে JSON স্ট্রিংকে অ্যারেতে রূপান্তর করবেন


123

আমি যা করতে চাই তা হল:

  1. পিএইচপি-তে পাঠ্য অঞ্চল থেকে ইনপুট হিসাবে জেএসনকে নেওয়া
  2. এই ইনপুটটি ব্যবহার করুন এবং এটিকে 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);

উপরের কোডটি আমাকে অ্যারে ফিরিয়ে দিচ্ছে না।


1
আপনার কি জসন স্ট্রিংকে অ্যারেতে রূপান্তর করতে হবে বা আপনি কি সেই ডেটা থেকে কোনও ইউআরএল তৈরি করতে চান? প্রশ্নটি আসলে কী?
জ্যানিস ভিনবার্গস

then it is not givingকি দিচ্ছে না? আপনি টেক্সেরিয়া থেকে একটি জেএসএন ফর্ম্যাট স্ট্রিং নেন এবং আপনি এটি জেএসওনে রূপান্তর করেন ???
PeeHaa

1
আপনি যদি আমার প্রশ্নে উপরের জসনটি করেন তবে json_decode (, সত্য) এটি কী আবার অ্যারে পুনরায় শুরু করে
XMen

@ পেপাকা দয়া করে আমার জিজ্ঞাসাটি আবার দেখুন।
এক্সএম

3
এটি ছিল অবৈধ জসন সমস্যা।
এক্সএম

উত্তর:


187

আপনি যদি আপনার পোস্টে জেএসএন পাস করেন তবে 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.

আপনি যদি আমার প্রশ্নে উপরের জসনটি করেন তবে json_decode (, সত্য) এটি কী আবার অ্যারে পুনরায় শুরু করে
XMen

@ রাহুলমহেতা আপনি যদি পিএইচপি-র অন্তর্নির্মিত ব্যবহার করছেন তবে এটি আপনার জেএসওএন অবৈধ (উদাহরণস্বরূপ, কোনও উদ্ধৃত কী) নেই json_decode()return NULLডকুমেন্টেশনগুলি এটাই বলে এবং এটি আমার পিএইচপি 5.2 ইনস্টলেশন প্রত্যাবর্তন করে। আপনি কি অফিসিয়াল, অন্তর্নির্মিত ছাড়া অন্য কোনও ফাংশন ব্যবহার করছেন json_decode()? কি var_dump(json_decode($str, true));ফিরে আসে?
রিকন

জসন_নকোডিংয়ের পরে, আমি প্রতিটি পৃথক জসন বস্তু যেমন {foo: "বার" read অ্যারেতে অবজেক্ট হিসাবে পড়তে চাই। আমি প্রতিটি জসন বস্তু পড়তে json_encoded ডেটা থেকে কীভাবে একটি অ্যারে তৈরি করতে পারি? @ রিক্কাসরুক্কাস
মানি 265

@ ম্যানি 265 এমন কিছু মনে হচ্ছে যা (1) কিছু নমুনা কোড, (2) আপনি এখন পর্যন্ত কী চেষ্টা করেছেন এবং (3) এই মন্তব্য বিভাগের চেয়ে প্রত্যাশিত ফলাফলটি দিয়ে নিজের প্রশ্নের দাবি রাখে।
রিকন

96

এটা চেষ্টা কর:

$data = json_decode($your_json_string, TRUE);

দ্বিতীয় প্যারামিটারটি ডিকোডেড জসন স্ট্রিংটিকে একটি এসোসিয়েটিভ অ্যারেগুলিতে তৈরি করবে।


30

আপনি কি ফর্মটি থেকে 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;

2
পারফেক্ট, এটি কাজ করে। আমি যখন $ _POST ফাংশন থেকে তথ্য পাই json_last_error () = ছিল JSON_ERROR_SYNTAX এ। তবে সব ঠিক ছিল। এটি ডেস্কডের ত্রুটি ছিল ascii বা utf8 এর মতো এনকোডের ত্রুটি নয়। ধন্যবাদ

11

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)
}

6

যদি আপনি ব্যবহার করে ইউআরএল থেকে জসন স্ট্রিং পান 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));

6

আপনার স্ট্রিং নিম্নলিখিত বিন্যাসে হওয়া উচিত:

$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
                )

        )

)

2

আপনি json অবজেক্টকে অ্যারে এবং স্ট্রিংয়ে রূপান্তর করতে পারেন।

$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++;
}

1

আপনার যদি কখনও নেস্টিংয়ের সমস্ত স্তরের সাথে জেএসএন ফাইল বা কাঠামোগুলিকে পিএইচপি-স্টাইল অ্যারে রূপান্তর করতে হয় তবে আপনি এই ফাংশনটি ব্যবহার করতে পারেন। প্রথমত, আপনাকে অবশ্যই json_decode (J yourJSONdata) করতে হবে এবং তারপরে এটিকে এই ফাংশনে পাস করতে হবে। এটি আপনার ব্রাউজার উইন্ডোতে (বা কনসোল) সঠিক পিএইচপি স্টাইলযুক্ত অ্যারে আউটপুট দেবে।

https://github.com/mobsted/jsontophparray


1
<?php
$str='{
    "action" : "create",
    "record" : {
                "type": "$product",
                "fields": {
                           "name": "Bread",
                           "price": "2.11"
                           },
                "namespaces": { "my.demo": "n" }
                }
    }';
echo $str;
echo "<br>";
$jsonstr = json_decode($str, true);
print_r($jsonstr);

?>

আমি মনে করি এটি কাজ করা উচিত, ঠিক এই যে কীগুলি যদি সংখ্যা হয় না তবে ডাবল কোটে থাকা উচিত।


1

এটি আমার সমাধান: জেসন স্ট্রিং $columns_validation = string(1736) "[{"colId":"N_ni","hide":true,"aggFunc":null,"width":136,"pivotIndex":null,"pinned":null,"rowGroupIndex":null},{"colId":"J_2_fait","hide":true,"aggFunc":null,"width":67,"pivotIndex":null,"pinned":null,"rowGroupIndex":null}]"

সুতরাং আমি json_decode এর মত দুবার ব্যবহার করি:

$js_column_validation = json_decode($columns_validation);
$js_column_validation = json_decode($js_column_validation); 

var_dump($js_column_validation);

এবং ফলাফল:

 array(15) { [0]=> object(stdClass)#23 (7) { ["colId"]=> string(4) "N_ni" ["hide"]=> bool(true) ["aggFunc"]=> NULL ["width"]=> int(136) ["pivotIndex"]=> NULL ["pinned"]=> NULL ["rowGroupIndex"]=> NULL } [1]=> object(stdClass)#2130 (7) { ["colId"]=> string(8) "J_2_fait" ["hide"]=> bool(true) ["aggFunc"]=> NULL ["width"]=> int(67) ["pivotIndex"]=> NULL ["pinned"]=> NULL ["rowGroupIndex"]=> NULL }

থ্যাঙ্কস ভাই ... আপনি আমার দিনটি বাঁচিয়েছেন
নুয়ান উইথনেজ

1

নিশ্চিত হয়ে নিন যে স্ট্রিংটি নিম্নলিখিত JSON ফর্ম্যাটে রয়েছে যা এই জাতীয় কিছু:

{"result":"success","testid":"1"} (with " ") .

যদি তা না হয় তবে "responsetype => json"আপনি আপনার অনুরোধের প্যারামগুলিতে যুক্ত করতে পারেন ।

তারপরে json_decode($response,true)এটিকে অ্যারে রূপান্তর করতে ব্যবহার করুন ।


1
স্ট্যাকওভারফ্লোতে আপনাকে স্বাগতম :-) সম্প্রদায়টি নতুন সদস্যদের জন্য সর্বদা খুশি যারা এটিতে অবদান রাখতে চায় এবং আপনার মনোভাবের প্রশংসা করে। দুঃখজনকভাবে অন্য একজন সদস্য ভেবেছিলেন আপনার উত্তরটি ডাউনটাউটের যোগ্য। এটি হতে পারে, কারণ প্রশ্নটি নিজেই প্রায় সাত বছর আগে জিজ্ঞাসা করা হয়েছিল এবং ইতিমধ্যে বেশ কয়েকবার উত্তর দেওয়া হয়েছিল। উপরন্তু responseTypeসম্পত্তি অনুরোধ উত্তরে ডেটার প্রকার নির্ধারণ করতে ব্যবহৃত হয়। তবুও সমস্যাটি হ'ল, অনুরোধের বডিটিতে এমন ডেটা রয়েছে যা সঠিক ফলম্যাটে নেই। আপনার উত্তর সুতরাং প্রদত্ত প্রসঙ্গে ফিট করে না।
ফিলিপ মৌরার 16'18

1

আপনি নীচে JSON এ একটি স্ট্রিং পরিবর্তন করতে পারেন এবং আপনি চাইলে স্ট্রিংয়ের উপর স্ট্রিপও ছাঁটাতে পারেন,

$str     = '[{"id":1, "value":"Comfort Stretch"}]';
//here is JSON object
$filters = json_decode($str);

foreach($filters as $obj){
   $filter_id[] = $obj->id;
}

//here is your array from that JSON
$filter_id;

0

এই রূপান্তরকারীটি ব্যবহার করুন, এটি মোটেই ব্যর্থ হয় না: পরিষেবাদি_জসন

// create a new instance of Services_JSON
$json = new Services_JSON();

// convert a complexe value to JSON notation, and send it to the browser
$value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));
$output = $json->encode($value);
print($output);
// prints: ["foo","bar",[1,2,"baz"],[3,[4]]]

// accept incoming POST data, assumed to be in JSON notation
$input = file_get_contents('php://input', 1000000);
$value = $json->decode($input);

// if you want to convert json to php arrays:
$json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);

-2
$data = json_encode($result, true);

echo $data;

2
যদিও এই কোডটি প্রশ্নের উত্তর দিতে পারে, কেন এবং / অথবা এই কোডটির প্রশ্নের উত্তর কীভাবে তার দীর্ঘমেয়াদী মানকে উন্নত করে তা সম্পর্কিত অতিরিক্ত প্রসঙ্গ সরবরাহ করে।
রোলস্টুহফলাহার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.