সঠিকভাবে JSON- অবজেক্ট তৈরি করুন


107

আমি পিএইচপি অ্যারে থেকে একটি জেএসওএন অবজেক্ট তৈরি করার চেষ্টা করছি। অ্যারে দেখতে এমন দেখাচ্ছে:

$post_data = array('item_type_id' => $item_type,
    'string_key' => $string_key,
    'string_value' => $string_value,
    'string_extra' => $string_extra,
    'is_public' => $public,
    'is_public_for_contacts' => $public_contacts);

জেএসএনকে এনকোড করার কোডটি দেখতে এমন দেখাচ্ছে:

$post_data = json_encode($post_data);

জেএসওএন ফাইলটি শেষ পর্যন্ত এর মতো দেখতে পাওয়া যাবে বলে মনে করা হচ্ছে:

{
    "item": {
        "is_public_for_contacts": false,
        "string_extra": "100000583627394",
        "string_value": "value",
        "string_key": "key",
        "is_public": true,
        "item_type_id": 4,
        "numeric_extra": 0
    }
} 

আমি "আইটেম" এ তৈরি জেএসএন কোডটি কীভাবে সজ্জিত করতে পারি: {জেএসন কোড এখানে}}

উত্তর:


161

সাধারণত, আপনি এই জাতীয় কিছু করবেন:

$post_data = json_encode(array('item' => $post_data));

তবে, যেমন মনে হচ্ছে আপনি আউটপুট " {}" এর সাথে থাকতে চান , আপনি ধ্রুবকটি json_encode()অতিক্রম করে অবজেক্ট হিসাবে এনকোড করতে বাধ্য করা ভাল makeJSON_FORCE_OBJECT

$post_data = json_encode(array('item' => $post_data), JSON_FORCE_OBJECT);

" {}" বন্ধনীগুলি একটি বিষয় নির্দিষ্ট করে এবং " []" জেএসএন স্পেসিফিকেশন অনুসারে অ্যারেগুলির জন্য ব্যবহৃত হয়।


আমি যোগ হবে JSON_FORCE_OBJECTjson_encode($arr, JSON_FORCE_OBJECT)
আদম Lukaszczyk

এটা কি সঠিক? ; পোস্ট_ডেটা = জসন_কোড (অ্যারে ('আইটেম' => $ পোস্ট_ডেটা), জেএসএন_এফএআরসি। ও বিজেইসিটি));
মার্ক ডেন

1
jsonwrapper - হয়তো এই কারো জন্য সহায়ক হবে boutell.com/scripts/jsonwrapper.html json_(en|de)code পিএইচপি আগের সংস্করণের জন্য
robertbasic

আমার ভিতরে যদি কোথাও বাসা বেঁধে থাকে তবে কী হবে $post_data। এটি তাদের পাশাপাশি বস্তুগুলিও তৈরি করবে, সঠিক?
সমস্যাগুলি

প্রতিধ্বনি json_encode (অ্যারে ('আইটেম' => $ পোস্ট_ডেটা)); এর JSON কাঠামো তৈরি করবে: অবজেক্ট, অ্যারে, অবজেক্ট। বা: {[{কোন আইওএস অ্যাপ্লিকেশনটিতে মাইএসকিউএল জেএসএন প্রতিক্রিয়া আমদানি করছিলাম ঠিক সেটাই যা আমি খুঁজছিলাম :-) ক্রিশ্চিয়ানকে ধন্যবাদ !!!
জ্যাকব টপিং

63

যদিও এখানে পোস্ট করা অন্যান্য উত্তরগুলি কাজ করে তবে আমি নীচের পদ্ধতিকে আরও প্রাকৃতিক বলে মনে করি:

$obj = (object) [
    'aString' => 'some string',
    'anArray' => [ 1, 2, 3 ]
];

echo json_encode($obj);

1
এই প্রতিক্রিয়া তাই ভাল। এছাড়াও যখন আপনি যখন কোনও বস্তুটি এনকোড করতে যাচ্ছেন বা আপনি যদি কোনও বস্তুর অ্যারে এনকোড করতে চান ঠিক তখন নিয়ন্ত্রণ করেন না: তবে JSON_FORCE_OBJECT প্রতিক্রিয়া কাজ করে না। অন্যদিকে অনেক বেশি পঠনযোগ্য। ধন্যবাদ!
নেটেক্সেট

আপনি যদি কোনও এনকোড সন্ধান করছেন যা কোনও অবজেক্ট হিসাবে শুরু হয় এবং অ্যারে ধারণ করে এগিয়ে চলেছে, এটি আপনার উত্তর।
নভেম্বর

31

আপনার পিএইচপি অ্যারেতে আপনার আর একটি স্তর দরকার:

$post_data = array(
  'item' => array(
    'item_type_id' => $item_type,
    'string_key' => $string_key,
    'string_value' => $string_value,
    'string_extra' => $string_extra,
    'is_public' => $public,
   'is_public_for_contacts' => $public_contacts
  )
);

echo json_encode($post_data);


1

আপনি জেসন একটি জেনেরিক বস্তুকে এনকোড করতে পারেন।

$post_data = new stdClass();
$post_data->item = new stdClass();
$post_data->item->item_type_id = $item_type;
$post_data->item->string_key = $string_key;
$post_data->item->string_value = $string_value;
$post_data->item->string_extra = $string_extra;
$post_data->item->is_public = $public;
$post_data->item->is_public_for_contacts = $public_contacts;
echo json_encode($post_data);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.