我在excel单元格中有JSON文本,但很难阅读。我想格式化文本,以便更容易阅读变量/值。
var ss = SpreadsheetApp.getActive();
var jVal = ss.getRange('N145').getValue();
var jFormat = JSON.stringify(jVal,null, 3);
SpreadsheetApp.getUi().alert(jFormat);
Google工作表中的文本:
{payload:{client:"something",messages:[{name:"something",contentType:"something",messageType:"something",content:"something",liveChatGroupType:"",chatCondition:"something",liveChatGroup:"something"}],version:"2.0",params:{type:"dtree"}},messageType:"PAYLOAD"}
我得到的输出为:
"{payload:{client:\"something\",messages:[{name:\"something\",contentType:\"something\",messageType:\"something\",content:\"something\",liveChatGroupType:\"\",chatCondition:\"something\",liveChatGroup:\"something\"}],version:\"2.0\",params:{type:\"dtree\"}},messageType:\"PAYLOAD\"}"
我想看起来像:
{
"payload":{
"client":"something",
"messages":[
{
"name":"something",
"contentType":"something",
"messageType":"something",
"content":"something",
"liveChatGroupType":"",
"chatCondition":"something",
"liveChatGroup":"something"
}
],
"version":"2.0",
"params":{
"type":"dtree"
}
},
"messageType":"PAYLOAD"
}
2条答案
按热度按时间wz8daaqr1#
建议:检查JSON格式,然后在JSON.stringify中使用JSON.parse
在格式方面,您需要编辑指定单元格中的JSON,将键设置为字符串,因为getValue()函数只读取
values of type Number, Boolean, Date, or String
。因此,JSON对象将被自动读取为字符串值(这将导致您的帖子的输出)。作为解决方法,您可以更改:
致:
之后,您可以使用下面修改过的脚本在警报弹出窗口中显示json:
在上面的脚本中,getValue()读取的字符串首先使用
JSON.parse
转换为JSON对象,然后使用JSON.stringify
转换回格式化字符串以供显示。控制台输出应如下所示:
警报弹出窗口应如下所示:
参考文献:
rdrgkggo2#
数据不符合JSON。主要问题是许多元素的双引号被去掉了。正如@PatrickdC所指出的,数据必须转换为符合JSON的格式。
假设您的输出位于单元格B1中。
=REGEXREPLACE(B1,"[{]","{""")
=REGEXREPLACE(B2,"[:]",""":")
=REGEXREPLACE(B3,"[,]",",""")
样品
打印美化的JSON
参考Indent pretty JSON in Google Sheet Apps Script