JSON-Object को सही तरीके से बनाएँ


107

मैं एक PHP सरणी से एक JSON ऑब्जेक्ट बनाने की कोशिश कर रहा हूं। सरणी इस तरह दिखती है:

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

JSON को एन्कोड करने के लिए कोड इस तरह दिखता है:

$post_data = json_encode($post_data);

JSON फाइल को अंत में इस तरह देखना चाहिए:

{
    "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
    }
} 

मैं बनाए गए JSON कोड को "आइटम" में कैसे एन्क्रिप्ट कर सकता हूं: {JSON CODE HERE}।

जवाबों:


161

आमतौर पर, आप कुछ इस तरह से करेंगे:

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

लेकिन, जैसा कि ऐसा लगता है कि आप चाहते हैं कि आउटपुट " {}" के साथ हो , आप निरंतरता json_encode()को पार करके वस्तु के रूप में सांकेतिक शब्दों में बदलना सुनिश्चित करते हैं JSON_FORCE_OBJECT

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

" {}" कोष्ठक एक वस्तु को निर्दिष्ट करते हैं और " []" JSON विनिर्देशन के अनुसार सरणियों के लिए उपयोग किए जाते हैं।


मैं जोड़ना होगा JSON_FORCE_OBJECTमेंjson_encode($arr, JSON_FORCE_OBJECT)
एडम Lukaszczyk

क्या ये सही है? $ post_data = json_encode (सरणी ('आइटम' => $ post_data), JSON_FORCE_OBJECT);
मार्क डेन्

1
शायद यह किसी के लिए उपयोगी होगा - PHP के पुराने संस्करणों के लिए jsonwrapper boutell.com/scripts/jsonwrapper.html json_(en|de)code
robertbasic

क्या होगा अगर मेरे पास एक सरणी है, तो कहीं अंदर घोंसला है $post_data। यह उन्हें वस्तुओं के रूप में अच्छी तरह से, सही होगा?
ProblemsOfSumit

echo json_encode (सरणी ('आइटम' => $ post_data)); का JSON स्ट्रक्चर बनाएगा: ऑब्जेक्ट, एरे, ऑब्जेक्ट। या: {[{जो वास्तव में मैं देख रहा था, वह एक आईओएस ऐप में MySQL JSON की प्रतिक्रिया आयात कर रहा है :-) THANKS क्रिस्टियन !!!
याकूब टॉपिंग

63

यद्यपि यहाँ पोस्ट किए गए अन्य उत्तर काम करते हैं, मुझे निम्नलिखित दृष्टिकोण अधिक स्वाभाविक लगता है:

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

echo json_encode($obj);

1
यह प्रतिक्रिया बहुत अच्छी है। जब आप किसी ऑब्जेक्ट को एन्कोडेड करने जा रहे हैं या जब आप ऑब्जेक्ट्स की एक सरणी को एनकोड करना चाहते हैं, तो आप वास्तव में नियंत्रित नहीं करते हैं: तब JSON_FORCE_OBJECT प्रतिक्रिया काम नहीं करती है। दूसरी तरफ बहुत अधिक पठनीय है। धन्यवाद!
नैटएक्सट

यदि आप एक एन्कोड की तलाश कर रहे हैं जो एक ऑब्जेक्ट के रूप में शुरू होता है और एरेज़ शामिल करने के लिए आगे बढ़ता है, तो यह आपका उत्तर है।
3

31

आपको अपने php सरणी में बस एक और परत चाहिए:

$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);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.