从Google电子表格中解析JSON

jru*_*rue 6 javascript json google-api google-sheets

编辑: entry.content.$t访问单个单元格是错误的字段.entry.gsx $ [ cell column header ]是正确的方法.抱歉并感谢您帮助解决这个问题.

原始问题:

我正在尝试解析Google电子表格中的JSON数据.问题是,entries字段返回一个字符串,该字符串是电子表格的整行 - 但显示为格式错误的对象.其他人如何解析这些数据?以下是内容节点的外观:

"content":
{
    "type"   :"text",
    "$t"     :"location: 780 Valencia St San Francisco, CA 94110,
               phonenumber: (555) 555-5555,
               website: http://www.780cafe.com,
               latitude: 37.760505,
               longitude: -122.421447"
},
Run Code Online (Sandbox Code Playgroud)

仔细查看,该$t字段会返回整个字符串,该字符串是Google电子表格中的一行.所以entry.content.$t返回一个字符串:location: 780 Valencia St San Francisco, CA 94110, phonenumber: (555) 555-5555...

进一步加剧这个问题的是电子表格中的一些单元格具有逗号(如地址),这些逗号不会被转义或引用.就像是

jQuery.parseJSON(entry.content.$t)
Run Code Online (Sandbox Code Playgroud)

要么

eval('('+ entry.content.$t + ')')
Run Code Online (Sandbox Code Playgroud)

抛出错误.我认为正则表达式是一种选择,但我希望其他人可能以更优雅的方式解决这个问题.谢谢您的帮助!

小智 1

属性内的“文本”$t不是 JSON。根据文档,文本节点会转换为$t属性,因此您不能依赖其中格式正确的 JSON 中的任何内容。

我建议使用正则表达式,尽管我会警告您解析该输出将需要一些奇特的东西。你最终会使用断言,因为你不能用逗号分割 - 你必须搜索,(\w+):但为了找到下一个元素,你必须接受直到另一个匹配的所有内容(\w+):,但也不能吞噬起来吧。可以办到。