Responding with a JSON object in Node.js (converting object/array to JSON string)

前端 未结 6 1085
广开言路
广开言路 2020-12-04 08:01

I\'m a newb to back-end code and I\'m trying to create a function that will respond to me a JSON string. I currently have this from an example

function rando         


        
相关标签:
6条回答
  • 2020-12-04 08:33
    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);
    

    I have used the above code in my existing project.

    0 讨论(0)
  • 2020-12-04 08:35

    Per JamieL's answer to another post:

    Since Express.js 3x the response object has a json() method which sets all the headers correctly for you.

    Example:

    res.json({"foo": "bar"});
    
    0 讨论(0)
  • 2020-12-04 08:36

    Using res.json with Express:

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

    Alternatively:

    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);
    }
    
    0 讨论(0)
  • 2020-12-04 08:41

    You have to use the JSON.stringify() function included with the V8 engine that node uses.

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

    Edit: As far as I know, IANA has officially registered a MIME type for JSON as application/json in RFC4627. It is also is listed in the Internet Media Type list here.

    0 讨论(0)
  • 2020-12-04 08:54

    in express there may be application-scoped JSON formatters.

    after looking at express\lib\response.js, I'm using this routine:

    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);
    }
    
    0 讨论(0)
  • 2020-12-04 08:55
    var objToJson = { };
    objToJson.response = response;
    response.write(JSON.stringify(objToJson));
    

    If you alert(JSON.stringify(objToJson)) you will get {"response":"value"}

    0 讨论(0)
提交回复
热议问题