json - 有人在 mongodb 中存储原始 SVG 数据吗?

标签 json svg mongodb escaping

我正在做一个项目,希望在我的 mongodb 中存储原始 svg 数据。现在,它看起来有点傻,因为我需要像这样转义 svg 字符串:

{ "_id" : ObjectId("4c61e60d4d02da615f175b6e"), "name" : "Triangle", "svg-data" : "<?xml version=\"1.0\" encoding=\"utf-8\"?> <!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) --> <!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"> <svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"63.781px\" height=\"85.042px\" ... bunch of data elided here ... </svg>" }

这在某种程度上是可以接受的,但是一旦 json 从服务器传回,我可能需要在客户端反转义(这是一个词吗?)或解码。

我很好奇是否有其他人在这样做(我在谷歌或堆栈溢出中找不到任何示例)和/或是否有任何关于最好的方法(或更好的方法)的建议).

最佳答案

我个人还没有在 MongoDB 中存储文件,但是 according to mongodb.org将文件存储在数据库中非常有效。在数据库中存储文件具有以下优点:

  • 因为文件是分块的,所以您只能获取文件的一部分。对视频等对象很有用,对 SVG 没那么有用。
  • 您的所有文件都与您的数据库一起复制,因此您不必仅为文件设置单独的复制系统。

现在,似乎阻碍您前进的是转义数据。但是,如果您在 MongoDB shell 中手动键入语句,则只需转义 SVG 数据。如果您使用的是 driver为了与数据库交互,驱动程序将负责转义数据中的特殊字符。当您在代码中读出数据时,驱动程序也会为您转义数据。

在 MongoDB shell 中演示的示例:

var myObject = { "myKey": "Data with \"special\" characters." }
print(myObject.myKey)

在第一行中,我必须对引号进行转义,因为我手动输入了语句。如果您通过代码与数据库交互,MongoDB 驱动程序会为您做这件事

print() 语句自动对数据进行反转义,因此输出将是:

Data with "special" characters.

数据库驱动程序也会自动对字符串进行转义。如果您将 JSON 对象发送到客户端的浏览器并使用 JavaScript 读取值,浏览器也会对数据进行转义

当您手动准备要插入的数据时,您必须转义特殊字符,这是没有办法的。但是,只要您通过代码与数据库交互,数据库驱动程序就会处理好这件事,您不必担心。

关于json - 有人在 mongodb 中存储原始 SVG 数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3461748/

相关文章:

java - 我们可以将 CDATA 嵌入到 xml 中的名称值对的纯字符串中吗?

javascript - 将字符串转换为有效的 json

javascript - 几个跨度共享相同的边框和框阴影

javascript - 防止在 iOS 设备上缩放时出现锯齿 SVG 元素

javascript - 在 MongoDB 中存储日期而不考虑时区

python - pymongo 3 如何仅使用一个套接字连接 MongoDB?

node.js - 如何在远程服务器上运行多个 mongodb 数据库

c# - 如何在 MonoTouch 中使用 System.Json 进行序列化

ios - 无法使用 Swift Decodable 解析 JSON

html - Apple SVG 徽章不显示右边框