2015-03-08 14 views
11

में json के लिए एक सरणी परिवर्तित करने के लिए मैं restful apis बनाने रहा हूँ और मैं इसकैसे yii2

public function sendResponse($data) 
{ 
    header('Content-Type: application/json; charset=utf-8'); 
    echo CJSON::encode($data); 
    exit; 
} 

CJSON तरह yii1 में प्रतिक्रिया डेटा भेजने के लिए एक समारोह था Yii2 में उपलब्ध नहीं है तो मैं कैसे Yii2 में यह क्या करते हो

उत्तर

24

इस तरह हेडर मैन्युअल रूप से सेट करने की आवश्यकता नहीं है।

विशिष्ट कार्रवाई/विधि में आप ऐसा है जैसे कि यह निर्धारित कर सकते हैं:

return ['param' => $value]; 

आप सरकारी डॉक्स में इस संपत्ति पा सकते हैं:

use Yii; 
use yii\web\Response; 

... 

public function actionIndex() 
{ 
    Yii::$app->response->format = Response::FORMAT_JSON; 
} 

तब के बाद कि बस ऐसे ही एक सरल सरणी वापसी here

/** 
* @inheritdoc 
*/ 
public function behaviors() 
{ 
    return [ 
     [ 
      'class' => ContentNegotiator::className(), 
      'only' => ['index', 'view'] 
      'formats' => [ 
       'application/json' => Response::FORMAT_JSON, 
      ], 
     ], 
    ]; 
} 

अधिक सेटिंग्स नहीं हैं, तो आप official docs में यह जांच कर सकते हैं:

विशेष ContentNegotiator फिल्टर का उपयोग कर एक से अधिक कार्रवाई के लिए और अधिक लचीला दृष्टिकोण है।

बाकी के लिए, आधार yii\rest\Controller पहले से ही यह json और xml के लिए निर्धारित है:

'contentNegotiator' => [ 
    'class' => ContentNegotiator::className(), 
    'formats' => [ 
     'application/json' => Response::FORMAT_JSON, 
     'application/xml' => Response::FORMAT_XML, 
    ], 
], 
+3

महान जानकारी के लिए धन्यवाद arogachev। हालांकि मेरा सवाल यह था कि yii2 में जेसन एन्कोड कैसे करें, आपने सेटिंग्स शीर्षलेखों पर एक अच्छी जानकारी दी है धन्यवाद –

0

:: लगता है() -> asArray() -> सभी(); सहायता सहायता।

1

आप से

yii\helpers\Json; 

yii2 में Json वर्ग इस्तेमाल कर सकते हैं यह इस तरह के रूप पद्धतियां हैं:

Json::encode(); 
Json::decode(); 

इन विधियों सीधे json सरणी में yii2 ActiveRecord वस्तुओं बदल देता है।

+0

जेसन :: डीकोड(); जेसन वस्तुओं को डीकोड नहीं किया – Developer

 संबंधित मुद्दे