2010-05-16 12 views
12

के साथ जेएसओएन पेलोड प्राप्त करें मुझे अपनी साइट के आंतरिक वेबपृष्ठ पर/property/setjob पर एक webservice से JSON पेलोड प्राप्त हो रहा है। निम्नलिखित JSON पेलोड है करने के लिए/संपत्ति/setjob तैनात किया जा रहा:जेएनईएन फ्रेमवर्क और/या PHP

[{ "नौकरी": { "source_filename": "बीयर पिलाने-pig.mpg", "CURRENT_STEP": "waiting_for_file" , "encoding_profile_id": "शून्य", "संकल्प": "शून्य", "STATUS_URL": "http://example.com/api/v1/jobs/1.json", "आईडी": 1, "बिटरेट": "शून्य", "CURRENT_STATUS": " फ़ाइल की प्रतीक्षा ", " current_progress ":" nil ", " remote_id ":" my-own-remote-id "}}]

यह पेलोड इस पृष्ठ पर एक बार पोस्ट करता है। पृष्ठ देखने के लिए नहीं है लेकिन आईडी और current_status के लिए JSON ऑब्जेक्ट को पार्स करना है ताकि मैं इसे डेटाबेस में सम्मिलित कर सकूं। मैं ज़ेंड फ्रेमवर्क का उपयोग कर रहा हूं।

मुझे ज़ेंड में यह पेलोड कैसे प्राप्त होता है? क्या मैं $ _GET ['json'] करता हूं? $ _POST [ 'काम']? इनमें से कोई भी काम नहीं कर रहा है। मुझे अनिवार्य रूप से इस पेलोड को एक php चर में असाइन करने की आवश्यकता है ताकि मैं इसे कुशल बना सकूं।

मैं कोशिश की है:

$ jsonStrGet = var_dump ($ _ जीईटी); $ jsonStrPost = var_dump ($ _ POST);

और मैंने कोशिश की है: $ प्रतिक्रिया = $ यह-> getResponse(); $ body = $ प्रतिक्रिया-> getBody();

Blockquote

किसी भी मदद की बहुत सराहना की जाएगी! धन्यवाद।

+0

$ jsonStrGet = var_dump ($ _ GET) का आउटपुट क्या था; $ jsonStrPost = var_dump ($ _ POST); ? –

+0

इस प्रश्न का उत्तर देखें: http://stackoverflow.com/questions/813487/how-to-post-json-to-php-with-curl –

उत्तर

0

सुनिश्चित नहीं है कि आप क्या पूछ रहे हैं, लेकिन एक JSON स्ट्रिंग को किसी ऑब्जेक्ट में कनवर्ट करने के लिए, Zend_Json::decode($foo) का उपयोग करें?

1

मैं कैसे आप जेडएफ यहाँ का उपयोग के बारे में पता नहीं कर रहा हूँ, लेकिन अनुरोध पैरामीटर के लिए उपयोग करने के लिए, आप अपने नियंत्रक में

$this->getParams() or $this->getParam('yourvar'); 

(See manual)

उपयोग करने के लिए की जरूरत है।

फिर, Zend_Json::decode($var);

32

का उपयोग यह इस तरह से पेलोड डेटा प्राप्त करने के लिए (आपके कार्य विधि के अंदर) संभव है: [{ "काम":

$body = $this->getRequest()->getRawBody(); 
$data = Zend_Json::decode($body); 

$ शरीर अपने कच्चे JSON स्ट्रिंग में शामिल होंगे : {"source_filename": ...}] और $ डेटा चर में पेलोड में डीकोड किए गए JSON डेटा को डीकोड किया जाएगा।

+0

अच्छा उत्तर, धन्यवाद :) –

+11

ZF2: '$ this-> अनुरोध> getContent(); ' – Saeven

1

ज़ेन फ्रेमवर्क 2 के लिए उपरोक्त @Saeven ने जो कहा, उसके बाद आप $ अनुरोध-> getContent() \ Zend \ Json \ Json :: decode के साथ उपयोग करेंगे। यहां एक उदाहरण दिया गया है जिसका उपयोग मैंने परीक्षण के लिए किया था।

<?php 

namespace Rsvp\Controller; 

use Zend\Mvc\Controller\AbstractActionController; 
use Zend\View\Model\ViewModel; 
use Zend\View\Model\JsonModel; 

class RsvpController extends AbstractActionController{ 

    public function getAccessTokenAction() { 
     $request = $this->getRequest(); 

     $result = array('status' => 'error', 'message' => 'There was some error. Try again.', 'isXmlHTTP' => $request->isXmlHttpRequest()); 

     if($request->isXmlHttpRequest()){ 
      $data = \Zend\Json\Json::decode($request->getContent()); 

      if(isset($data->token) && !empty($data->token)){ 
       $result['status'] = 'success'; 
       $result['accessToken'] = '1234'; 
       $result['message'] = ''; 
      } 
     } 

     return new JsonModel($result); 
    } 
} 
संबंधित मुद्दे