NSON.js में JSON ऑब्जेक्ट के साथ प्रतिक्रिया करना (ऑब्जेक्ट / सरणी को JSON स्ट्रिंग में कनवर्ट करना)


98

मैं बैक-एंड कोड का एक नायब हूं और मैं एक फ़ंक्शन बनाने की कोशिश कर रहा हूं जो मुझे JSON स्ट्रिंग का जवाब देगा। वर्तमान में मेरे पास एक उदाहरण है

function random(response) {
  console.log("Request handler 'random was called.");
  response.writeHead(200, {"Content-Type": "text/html"});

  response.write("random numbers that should come in the form of json");
  response.end();
}

यह मूल रूप से स्ट्रिंग "यादृच्छिक संख्याओं को प्रिंट करता है जो कि JSON के रूप में आना चाहिए"। मैं जो भी करना चाहता हूं वह एक जेएसएन स्ट्रिंग के साथ जो भी संख्या है उसका जवाब देना है। क्या मुझे एक अलग सामग्री-प्रकार डालने की आवश्यकता है? क्या इस फ़ंक्शन को ग्राहक की तरफ से किसी अन्य को मान देना चाहिए?

आपकी सहायताके लिए धन्यवाद!


res.json ({"कुंजी": "मान"});
अमोल एम। कुलकर्णी

जवाबों:


161

एक्सप्रेस के साथ res.json का उपयोग करना :

function random(response) {
  console.log("response.json sets the appropriate header and performs JSON.stringify");
  response.json({ 
    anObject: { item1: "item1val", item2: "item2val" }, 
    anArray: ["item1", "item2"], 
    another: "item"
  });
}

वैकल्पिक रूप से:

function random(response) {
  console.log("Request handler random was called.");
  response.writeHead(200, {"Content-Type": "application/json"});
  var otherArray = ["item1", "item2"];
  var otherObject = { item1: "item1val", item2: "item2val" };
  var json = JSON.stringify({ 
    anObject: otherObject, 
    anArray: otherArray, 
    another: "item"
  });
  response.end(json);
}

76
var objToJson = { };
objToJson.response = response;
response.write(JSON.stringify(objToJson));

अगर आपको alert(JSON.stringify(objToJson))मिलेगा{"response":"value"}


Res.write (JSON.stringify ()) अभी भी प्रतिक्रिया के लिए "समाप्त" होने की प्रतीक्षा करें। (res.end ()); एक्सप्रेस .json () आपके लिए यह
131

22

आपको JSON.stringify()नोड उपयोग करने वाले V8 इंजन के साथ शामिल फ़ंक्शन का उपयोग करना होगा।

var objToJson = { ... };
response.write(JSON.stringify(objToJson));

संपादित करें: जहां तक ​​मुझे पता है, IANA ने JSON के लिए RFC4627application/json में आधिकारिक तौर पर MIME प्रकार पंजीकृत किया है । इसे यहां इंटरनेट मीडिया टाइप सूची में भी सूचीबद्ध किया गया है


क्या सामग्री-प्रकार के शीर्षलेख को भी आवेदन / json या उस जैसे कुछ पर सेट किया जाना चाहिए? इसके लिए सबसे अच्छा अभ्यास क्या है?
एम्परसेंड

1
हां, इसे एक वैध प्रतिक्रिया देने के लिए ग्राहक समझ जाएगा। जोड़ें: res.writeHead (200, {'सामग्री-प्रकार': 'आवेदन / json'}) से पहले
अली

12

प्रति JamieL के जवाब के लिए एक और पोस्ट :

Express.js 3x के बाद से प्रतिक्रिया वस्तु में एक json () विधि है जो सभी हेडर को आपके लिए सही ढंग से सेट करती है।

उदाहरण:

res.json({"foo": "bar"});

मैं JSON फ़ाइल के साथ भी ऐसा कैसे कर सकता हूं?
HGB

Res.end () भूल न करें यदि आप इसका उपयोग करते हैं, तो मुझे इसकी आवश्यकता थी
चार्ल्स हेरिंग

2

व्यक्त में, आवेदन-स्कैन किए गए JSON फॉर्मेटर्स हो सकते हैं।

एक्सप्रेस \ lib \ response.js को देखने के बाद, मैं इस दिनचर्या का उपयोग कर रहा हूं:

function writeJsonPToRes(app, req, res, obj) {
    var replacer = app.get('json replacer');
    var spaces = app.get('json spaces');
    res.set('Content-Type', 'application/json');
    var partOfResponse = JSON.stringify(obj, replacer, spaces)
        .replace(/\u2028/g, '\\u2028')
        .replace(/\u2029/g, '\\u2029');
    var callback = req.query[app.get('jsonp callback name')];
    if (callback) {
        if (Array.isArray(callback)) callback = callback[0];
        res.set('Content-Type', 'text/javascript');
        var cb = callback.replace(/[^\[\]\w$.]/g, '');
        partOfResponse = 'typeof ' + cb + ' === \'function\' && ' + cb + '(' + partOfResponse + ');\n';
    }
    res.write(partOfResponse);
}

क्या यह जावास्क्रिप्ट फ़ंक्शंस भेजने के लिए है? क्या मुझे यह सही समझ रहा है? और आप ऐसा क्यों करेंगे? बस जिज्ञासु
सैम Vloeberghs

0
const http = require('http');
const url = require('url');

http.createServer((req,res)=>{

    const parseObj =  url.parse(req.url,true);
    const users = [{id:1,name:'soura'},{id:2,name:'soumya'}]

    if(parseObj.pathname == '/user-details' && req.method == "GET") {
        let Id = parseObj.query.id;
        let user_details = {};
        users.forEach((data,index)=>{
            if(data.id == Id){
                user_details = data;
            }
        })
        res.writeHead(200,{'x-auth-token':'Auth Token'})
        res.write(JSON.stringify(user_details)) // Json to String Convert
        res.end();
    }
}).listen(8000);

मैंने अपने मौजूदा प्रोजेक्ट में उपरोक्त कोड का उपयोग किया है।

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