好吧,我希望响应是一个纯字符串,而不是JSON。
例如这个对象
let obj = {
foo: 'bar',
baz: 1
}
应返回为
"{foo: 'bar', baz: 1}"
代替
{"foo": "bar", "baz": 1}
为什么?我需要将字符串用作quickchart
中的链接<img src="https://quickchart.io/chart?c={type:'line',data:{labels:['January','February', 'March','April', 'May'], datasets:[{label:'Dogs', data: [50,60,70,180,190], fill:false,borderColor:'blue'},{label:'Cats', data:[100,200,300,400,500], fill:false,borderColor:'green'}]}}">
JSON中的双引号会断开图像链接。
或者,也许建议一种更好的方法。
答案 0 :(得分:9)
JSON中的双引号会断开图像链接。
问题是,在"
个字符分隔的属性值中使用"
个字符会破坏该属性值。
虽然避免在数据中使用"
字符是 a 解决方案,但这并不是一个好方法(主要是因为避免不破坏其他内容而很难做到)。更好的解决方案是正确转义。
const json = JSON.stringify(obj);
const url_escaped_json = encodeURIComponent(json);
const img = `<img src="https://quickchart.io/chart?c=${url_escaped_json}" alt="...">`;
请注意,这不会使用HTML转义(将"
替换为"
),因为您是将数据放入URL中,因此需要先将URL转义(然后将替换{ {1}}与"
一起显示不需要的HTML转义)。
答案 1 :(得分:0)
您可以利用专用的API(例如Image-Charts)来很好地处理此类编码问题:
https://image-charts.com/chart?cht=lc
&chd=a:50,60,70,180,190|100,200,300,400,500
&chs=900x400
&chdl=Dogs|Cats&chdlp=t&chdls=444444,15
&chxt=x,y
&chxl=0:|January|February|March|April|May
&chg=1,1
&chco=0018F5,377E22
免责声明:我是Image-Charts创始人。
答案 2 :(得分:-2)
您可以为此使用JSON.stringify
。
let obj = {
foo: 'bar',
baz: 1
}
console.log(JSON.stringify(obj));
这会将对象转换为字符串。