নোড.জেএস (জেএসএন স্ট্রিংয়ে অবজেক্ট / অ্যারে রূপান্তর করা) এ জেএসওএন অবজেক্টের সাথে সাড়া দেওয়া


100

আমি ব্যাক-এন্ড কোডে একটি নতুন এবং আমি এমন একটি ফাংশন তৈরির চেষ্টা করছি যা আমাকে জেএসএন স্ট্রিংয়ের প্রতিক্রিয়া জানাবে। আমি বর্তমানে এটি একটি উদাহরণ থেকে আছে

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 আকারে আসা উচিত" মুদ্রণ করে। আমি যা করতে চাই তা হ'ল যে কোনও সংখ্যার JSON স্ট্রিং দিয়ে প্রতিক্রিয়া জানানো। আমার কি আলাদা কনটেন্ট টাইপ লাগানো দরকার? এই ফাংশনটি কি অন্যটির কাছে সেই মানটি ক্লায়েন্টের পক্ষে বলতে হবে?

আপনার সাহায্যের জন্য ধন্যবাদ!


res.json ({"কী": "মান"});
অমল এম কুলকার্নি

উত্তর:


164

এক্সপ্রেস সহ রেজ.জসন ব্যবহার :

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

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

আপনি যদি alert(JSON.stringify(objToJson))আপনি পাবেন{"response":"value"}


পুনরায় লিখুন (JSON.stringify ()) আপনার প্রতিক্রিয়াটি "শেষ" করার জন্য এখনও অপেক্ষা করুন। (রেজ.েন্ড ()); আপনার জন্য .json () প্রকাশ করুন
131

23

আপনাকে JSON.stringify()নোড ব্যবহার করে এমন ভি 8 ইঞ্জিনের সাথে অন্তর্ভুক্ত ফাংশনটি ব্যবহার করতে হবে ।

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

সম্পাদনা: আমি জানি যতদূর, IANA আনুষ্ঠানিকভাবে তাদেরকে JSON একটি MIME প্রকার হিসাবে নিবন্ধিত হয়েছে application/jsonRFC4627 । এটি এখানে ইন্টারনেট মিডিয়া টাইপ তালিকায় তালিকাভুক্ত করা হয়


কন্টেন্ট-টাইপ শিরোনামটিও কি অ্যাপ্লিকেশন / জেএসন বা এর মতো কিছুতে সেট করা উচিত? এর জন্য সর্বোত্তম অনুশীলন কী?
এম্পারস্যান্ড

4
হ্যাঁ, এটিকে বৈধ সাড়া দেওয়ার জন্য ক্লায়েন্ট বুঝতে পারবে। যোগ করুন: পুনঃউইরাইটহিড (200, Content 'বিষয়বস্তুর ধরণ': 'অ্যাপ্লিকেশন / জেসন'}) এর আগে
আলী

13

প্রতি JamieL এর উত্তর থেকে অন্য একটা পোস্টে :

যেহেতু এক্সপ্রেস.জেএসএক্স 3x রেসপন্স অবজেক্টে একটি জসন () পদ্ধতি রয়েছে যা আপনার জন্য সমস্ত শিরোনামকে সঠিকভাবে সেট করে।

উদাহরণ:

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

আমি কীভাবে JSON ফাইল দিয়ে এটি করতে পারি?
এইচজিবি

রেস.এন্ড () ভুলে যাবেন না (যদি আপনি এটি ব্যবহার করেন তবে আমার এটির দরকার ছিল
চার্লস হ্যারিং

3

এক্সপ্রেসে অ্যাপ্লিকেশন-স্কোপড জেএসএন ফর্ম্যাটর থাকতে পারে।

এক্সপ্রেস \ lib \ প্রতিক্রিয়া.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);
}

এটি কি জাভাস্ক্রিপ্ট ফাংশনগুলি ফেরত পাঠানোর জন্য? আমি কি এই অধিকার পেয়েছি? এবং আপনি এটা কেন করবেন? কেবল কৌতূহলী
স্যাম ভ্লোবার্গস

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

আমি আমার বিদ্যমান প্রকল্পে উপরের কোডটি ব্যবহার করেছি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.