在 Node.js 中响应 JSON 对象(将对象/数组转换为 JSON 字符串)

     2023-02-27     61

关键词:

【中文标题】在 Node.js 中响应 JSON 对象(将对象/数组转换为 JSON 字符串)【英文标题】:Responding with a JSON object in Node.js (converting object/array to JSON string) 【发布时间】:2011-08-19 01:15:10 【问题描述】:

我是后端代码的新手,我正在尝试创建一个函数来响应我的 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 形式出现的随机数”。我想要做的是用任何数字的 JSON 字符串响应。我需要放置不同的内容类型吗?这个函数应该将该值传递给客户端的另一个人吗?

感谢您的帮助!

【问题讨论】:

res.json("Key": "Value"); 【参考方案1】:

将res.json 与 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"
  );

或者:

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

【讨论】:

【参考方案2】:
var objToJson =  ;
objToJson.response = response;
response.write(JSON.stringify(objToJson));

如果你alert(JSON.stringify(objToJson)),你会得到"response":"value"

【讨论】:

请注意 res.write(JSON.stringify()) 仍在等待您“结束”响应。 (重发()) ;为你表达 .json() 到这个【参考方案3】:

您必须使用该节点使用的 V8 引擎附带的 JSON.stringify() 函数。

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

编辑:据我所知,IANA 已在RFC4627 中正式为 JSON 注册了一个 MIME 类型为application/json。它也列在Internet Media Type 列表here 中。

【讨论】:

是否应该将 content-type 标头也设置为 application/json 或类似的东西?这方面的最佳做法是什么? 是的,要使其成为客户能够理解的有效响应。添加:res.writeHead(200, 'Content-Type': 'application/json') 之前【参考方案4】:

根据JamieL 的answer 到another post:

由于 Express.js 3x 响应对象有一个 json() 方法,它设置 所有标题都为您正确。

例子:

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

【讨论】:

我怎样才能对 JSON 文件做同样的事情? 不要忘记 res.end() 如果你使用这个,我需要它【参考方案5】:

可能有应用程序范围的 JSON 格式化程序。

查看 express\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);

【讨论】:

这是为了发回javascript函数吗?我做对了吗?你为什么要这样做?只是好奇【参考方案6】:
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);

我已经在我现有的项目中使用了上面的代码。

【讨论】:

【参考方案7】:

JSON.stringify() 方法将 JavaScript 对象或值转换为 JSON 字符串,如果指定了替换函数,则可选地替换值,或者如果指定了替换器数组,则可选地仅包括指定的属性。

response.write(JSON.stringify( x: 5, y: 6 ));

know more

【讨论】:

在 Node.js/Express.js 中,如何将 JSON 对象从服务器传输到客户端?

】在Node.js/Express.js中,如何将JSON对象从服务器传输到客户端?【英文标题】:InNode.js/Express.js,howcanItransferaJSONobjectfromservertoclient?【发布时间】:2018-12-2518:47:18【问题描述】:在我的服务器中,我从数据库中检索一个对象并将其... 查看详情

在响应标头中发送对象 Node JS

】在响应标头中发送对象NodeJS【英文标题】:SendobjectinresponseheadersNodeJS【发布时间】:2020-05-0509:43:35【问题描述】:我需要在我的响应头中发送一个对象,但是当我访问它时,我只看到[objectobject]没有错误,没有别的。可能是什... 查看详情

如何使用node.js将多个json的对象合并到一个json文件中

】如何使用node.js将多个json的对象合并到一个json文件中【英文标题】:howtomergeobjectofmultiplejsonintoonejsonfileusingnode.js【发布时间】:2018-08-1821:34:29【问题描述】:我有多个json文件,它们只想合并其中的特定对象,然后将其保存到... 查看详情

如何在 Node JS 中打印对象

】如何在NodeJS中打印对象【英文标题】:HowtoprintobjectinNodeJS【发布时间】:2016-12-1015:35:00【问题描述】:在下面的代码中(在NodeJS上运行),我尝试使用JSON.stringify打印从外部API获得的对象,这会导致错误:TypeError:将循环结构... 查看详情

Node.js 中 JSON 对象中的 JSON 对象 [关闭]

】Node.js中JSON对象中的JSON对象[关闭]【英文标题】:JSONobjectwithinJSONobjectsinNode.js[closed]【发布时间】:2016-01-2604:30:55【问题描述】:我是node.JS的新手,目前正在从事一个小型项目。问题陈述:我想获取“window”的值,但想隐藏“w... 查看详情

Node.js 将响应对象句柄的句柄传递给子进程

】Node.js将响应对象句柄的句柄传递给子进程【英文标题】:Node.jspasshandleofresponseobjecthandletochildprocess【发布时间】:2013-07-1413:10:23【问题描述】:我有一个http服务器和一个分叉的子进程。我希望父母接收请求并使用worker.send传递... 查看详情

使用 Node.JS 将 JSON 对象数据插入 MySQL

】使用Node.JS将JSON对象数据插入MySQL【英文标题】:InsertJSONobjectdatatoMySQLusingNode.JS【发布时间】:2019-09-1106:13:17【问题描述】:我想在Node.js服务器的MySQL中插入一个JSON对象,这是代码letid=1letdate=newDate().toJSON().slice(0,10).replace(/-/g,\'... 查看详情

Node.js:从 JSON 响应中提取数据

】Node.js:从JSON响应中提取数据【英文标题】:Node.js:ExtractdatafromJSONresponse【发布时间】:2015-03-0318:48:29【问题描述】:我正在使用以JSON对象形式提供响应的API获取产品详细信息。"productBaseInfo":"productIdentifier":"productId":"EKTDDD23232zY... 查看详情

csv转换obj

参考技术A是指将csv文件转换为JavaScript对象的过程,也可以将其称之为csv转JSON。这种转换的一个关键步骤是将csv文件转换为JSON数组。JSON数组是一种可以被JavaScript解析的字符串,它包含每个JSON对象,每个JSON对象又代表csv文件中... 查看详情

如何在 Node.js 中使用 JSON 对象更新 mySQL 表?

】如何在Node.js中使用JSON对象更新mySQL表?【英文标题】:HowtoUPDATEamySQLtablewithJSONObjectinNode.js?【发布时间】:2020-03-1820:32:26【问题描述】:我有一个JSON对象,想更新一个mySQL表,但没有列出所有键使用INSERT我会这样做vararrayValue=Ob... 查看详情

在 node.js 中重命名 json 对象名称

】在node.js中重命名json对象名称【英文标题】:RenamejsonObjectnameinnode.js【发布时间】:2019-11-3022:23:23【问题描述】:如何将对象名称从Cars重命名为汽车?我尝试使用ObjectRenameKeys但它适用于对象内的属性而不是对象名称本身。原文... 查看详情

如何使用 node.js 访问 json 对象的子元素

】如何使用node.js访问json对象的子元素【英文标题】:Howtoaccesschildelementofjsonobjectusingnode.js【发布时间】:2015-02-0522:37:26【问题描述】:在我的node.js应用程序中,我从mongodb服务器检索值并希望将它们转换为CSV文件。父元素很容易... 查看详情

Spring Boot:将 JSON 响应包装在动态父对象中

】SpringBoot:将JSON响应包装在动态父对象中【英文标题】:SpringBoot:WrappingJSONresponseindynamicparentobjects【发布时间】:2017-06-1208:15:25【问题描述】:我有一个与后端微服务通信的RESTAPI规范,它返回以下值:关于“收藏”响应(例如G... 查看详情

通过Mongoose(Node JS)在Mongo DB中插入没有JSON模式的JSON对象

】通过Mongoose(NodeJS)在MongoDB中插入没有JSON模式的JSON对象【英文标题】:InsertingJSONobjectwithoutJSONschemainMongoDBthroughMongoose(NodeJS)【发布时间】:2016-03-1915:08:13【问题描述】:我创建了一个NodeJS项目来记录MongoDB中的JSON对象,该对象... 查看详情

将字段注入 JSON 响应对象

】将字段注入JSON响应对象【英文标题】:InjectfieldintoJSONresponseobject【发布时间】:2019-11-2302:38:20【问题描述】:我想在序列化期间向响应对象中注入一个字段。是否可以将"success":"true"注入JSON响应对象?这需要是所有被序列化的... 查看详情

如何将 JavaScript 对象/数组发送到前端 - node.js 应用程序

...发送到我的应用程序的前端以创建图表。我将数组附加到响应对象中,但这不起作用,尽管我可以使用前端响应对象中发送的用户值。varscoreQuery="SELECTq1,q 查看详情

如何在 Node JS 中读取文本文件并将其作为 JSON 对象返回?

】如何在NodeJS中读取文本文件并将其作为JSON对象返回?【英文标题】:HowtoreadatextfileandreturnitasaJSONobjectinNodeJS?【发布时间】:2017-01-1922:18:29【问题描述】:我有一个文本文件。我需要读取函数内的文件并将其作为JSON对象返回。... 查看详情

如何在 Node.js 中使用流对大型嵌套对象进行 JSON 字符串化?

】如何在Node.js中使用流对大型嵌套对象进行JSON字符串化?【英文标题】:HowtousestreamstoJSONstringifylargenestedobjectsinNode.js?【发布时间】:2015-12-0208:57:27【问题描述】:我有一个大型javascript对象,我想将其转换为JSON并写入文件。我... 查看详情