使用JSON
Zend亚博esk REST API是一个JSON API。如果您希望将数据发送到API以更新或创建Zendesk产品中的数据,则需要首先将其转换为JSON。亚博如果你想从Zendesk产品中获取数据,API将以JSON的形式提供亚博数据,你需要将其转换为可以使用的格式。
免责声明Ze亚博ndesk提供本文仅用于指导目的。亚博Zendesk不支持或保证代码。亚博Zendesk也不支持第三方技术,如JSON、JavaScript、Python、curl或jq。
JSON基础知识
JSON是一种轻量级的数据交换格式,易于人类阅读和机器解析。例子:
{
“文章”:[
{
“id”:35467,
“标题”:“我怎么打开保险箱?”,
…
},
…
]
}
JSON数据通常由一个或多个命名属性组成,例如“文章”
上面的属性。在本例中,属性的值是post对象的列表。每个对象共享一组属性,例如“id”
,“标题”
,其他人.
JSON数据可以用许多不同的方式构建。例子:
{
“投票”:{
“id”:35467,
“user_id”:888887,
“价值”:1,
…
}
}
看到API文档让各种API端点了解它们返回的JSON数据的结构。
要了解有关JSON的更多信息,请参见介绍JSON在json.org网站上。
将JSON转换为您可以理解的数据
API在一行返回JSON。如果它只有几个属性,您可以很容易地阅读它。将其粘贴到文本编辑器中并手动插入换行符会有所帮助。
如果JSON包含多个具有大量属性的对象,则信息变得更具挑战性:
一个解决方案是漂亮的打印这些信息。谷歌搜索会返回许多解决方案。在设置方面最简单的是“JSON格式化器”扩展谷歌Chrome。你可以从https://chrome.google.com/webstore/detail/json-formatter/bcjindcccaagfpapjjmafapmmgkkhgoa?hl=en.安装后,在Chrome中选择窗户>扩展,并为JSON Formatter扩展选择“允许访问文件url”选项。这样可以很好地打印本地文件。
将JSON结果粘贴到文本文件中,并使用. txt扩展。然后在Chrome (文件>打开的文件)。
将JSON转换为代码可以理解的数据
如果希望在代码中使用API返回的JSON,则必须将其转换为代码可以理解的数据结构。大多数编程语言都有工具来提供帮助。
本文介绍JavaScript和Python。如果您不使用这些语言,在您的语言文档中快速搜索应该会发现等效的工具。
JavaScript
使用JSON.parse ()
方法将JSON字符串转换为JavaScript对象。
要对该方法进行测试运行,将以下代码段粘贴到浏览器的JavaScript控制台中并按Enter:
varjson_string=”{“条”:{“标题”:《远大前程》}}”;
varjs_object=JSON.解析(json_string);
控制台.日志(typeofjs_object);
控制台.日志(js_object.文章.标题);
请注意:在Chrome浏览器中访问控制台,请选择视图>开发人员>JavaScript控制台.在Firefox中,选择工具>Web开发人员>Web控制台,并查找控制台底部的输入字段。如果在粘贴代码片段时收到诈骗警告,请在字段中键入“允许粘贴”并重试。
脚本应该在控制台中打印以下几行:
对象
远大前程》
第一行告诉您数据现在包含在一个JavaScript对象中。的值article.title
财产。
要了解更多信息,请参见JSON.parse ()在MDN文档中。
Python
Python的内置json库将JSON字符串或文件转换为Python数据结构。
使用json.loads ()
转换JSON字符串:
进口json
json_string=”{“条”:{“标题”:《远大前程》}}”
python_data=json.加载(json_string)
打印(类型(python_data))
打印(python_data[“文章”][“标题”])
在命令行界面中运行此代码应打印以下行:
<类“东西”>
远大前程》
第一行告诉您数据现在包含在Python字典中。的值标题
财产。
使用json.load ()
(单数)转换包含JSON的文件:
进口json
与开放(“json.txt”,模式=“r”,编码=“utf - 8”)作为f:
python_data=json.负载(f)
打印(类型(python_data))
要了解有关这些方法的更多信息,请参阅json模块Python网站上的文档。
要了解如何使用Python发出返回JSON数据的API请求,请参见向票务API发出请求.
如果你用流行的请求包,你可以使用响应
对象的json ()
方法转换HTTP响应中返回的JSON。例子:
进口请求
#……
响应=请求.得到(url,凭证)
python_data=响应.json()
你也可以用json.loads ()
方法,但要确保只传递响应内容,而不是整个响应。HTTP响应包含其他信息,例如会导致错误的报头。在Requests API中,响应内容包含在响应
对象的文本
财产。例子:
进口json
进口请求
#……
响应=请求.得到(url,凭证)
python_data=json.加载(响应.文本)
看到响应对象API文档在请求网站上获取更多信息。
将代码中的数据转换为JSON
如果您希望在代码中使用数据来更新或创建Zendesk产品中的数据,则需要在发送API请求之前将其转换为JSON。亚博
本文介绍JavaScript和Python。如果您不使用这些语言,您应该在您的语言文档中找到相应的语言。
JavaScript
使用JSON.stringify ()
方法将JavaScript对象转换为JSON字符串。
要对该方法进行测试运行,将以下代码段粘贴到浏览器的JavaScript控制台中并按Enter:
varjs_object={票:{评论:{html_body:< span style=" font:宋体;">Review the settings.'}}};
varjson_string=JSON.stringify(js_object);
控制台.日志(typeofjson_string);
控制台.日志(json_string);
请注意:在Chrome浏览器中访问控制台,请选择视图>开发人员>JavaScript控制台.在Firefox中,选择工具>Web开发人员>Web控制台,并查找控制台底部的输入字段。如果在粘贴代码片段时收到诈骗警告,请在字段中键入“允许粘贴”并重试。
脚本应该在控制台中打印以下几行:
字符串
{“票”:{“评论”:{“html_body”:“< = p风格\”颜色:红色;\”>查看设置"}}}
第一行告诉您数据现在是一个字符串,第二行显示JSON。
要了解更多信息,请参见JSON.stringify ()在MDN文档中。
Python
使用json.dumps ()
方法。json库将Python数据转换为JSON。例子:
进口json
python_data={“票”:{“评论”:{“html_body”:< span style=" font:宋体;">Review the settings.'}}}
json_string=json.转储(python_data)
打印(类型(json_string))
打印(json_string)
在命令行界面中运行此代码应打印以下行:
<类str的>
{“票”:{“评论”:{“html_body”:“< = p风格\”颜色:红色;\”>查看设置"}}}
第一行告诉您数据现在是一个字符串,第二行显示JSON。
要了解更多关于json.dumps ()
方法,参见json模块Python网站上的文档。
要了解如何使用Python发出包含JSON数据的API请求,请参见向票务API发出请求.
很好地打印JSON
你也可以用json.dumps ()
来漂亮地打印JSON。只需添加一个名为缩进
到json.dumps ()
方法如下:
json_string=json.转储(python_data,缩进=2)
这个例子现在应该输出:
{
“票”:{
“评论”:{
“身体”:“烟的颜色很鲜艳。”
}
}
}
将JSON写入文件
您可以将JSON写入名为json.txt代码如下:
与开放(“json.txt”,模式=' w ',编码=“utf - 8”)作为f:
f.写(json_string)
在curl语句中使用JSON
可以使用中各种方法生成的JSON输出将代码中的数据转换为JSON并将其直接粘贴到curl语句中,以便在Zendesk产品中更新和创建数据。亚博例子:
旋度https://{子域名}.亚博zendesk.com/api/v2/tickets/{id}. json\
- d{“票”:{“评论”:{“身体”:“烟很鲜艳。””}}}\
- h“application / json内容类型:\
- v - u{email_address}:{密码}\
- x将
curl语句包含用于添加票据注释的JSON数据- d旗帜代表数据)。要了解更多关于curl的信息,请参见安装和使用curl。Windows用户:另见在Windows中使用curl.
如果JSON数据太长,无法很好地放入curl语句中,您可以将其移动到文件中,然后使用@filename
语法。方法如下:
创建一个名为json.txt(或其他类似的东西),并将JSON移动到文件中。例子:
{“票”:{“评论”:{“身体”:“烟的颜色很鲜艳。”}}}
Python还允许您直接将JSON写入文件。请参阅说明Python以上。
更改curl语句以导入JSON数据
@filename
语法:旋度https://{子域名}.亚博zendesk.com/api/v2/tickets/{id}. json\
- d @json.txt\
- h“application / json内容类型:\
- v - u{email_address}:{密码}\
- x将
请注意:在Windows中,将行尾的反斜杠字符替换为插入字符(^)。
在运行语句之前,请使用cd命令(用于更改目录)以导航到包含该文件的文件夹。例子:
美元cdjson_files
运行curl语句。
使用curl和jq解析JSON响应
金桥是一个用于解析和修改JSON数据的命令行工具。您可以使用jq从curl请求的JSON响应中漂亮地打印和提取数据。
要安装jq,请查看下载jq网站的页面。
本节介绍使用jq的基础知识。有关完整文档,请参见金桥手册.
使用jq打印JSON响应非常漂亮
默认情况下,curl在单行上输出来自Zendesk api的JSON响应。亚博您可以使用jq将响应打印成更易于人类阅读的格式。
例如,下面的curl请求从Ticketing API中检索票证对象演出门票端点。
旋度https://{子域名}.亚博zendesk.com/api/v2/tickets/{id}. json\
- u{email_address}:{密码}
没有jq,请求的输出看起来像这样:
{“票”:{“assignee_id”:123456,“collaborator_ids”:[35334,234],“created_at”:“2099 - 07 - 20 - t22:55:29z”,…}}
Jq使用管道(|
)和点符号来访问JSON响应中的数据。要美观地打印整个响应,请添加'; '
到命令。
旋度https://{子域名}.亚博zendesk.com/api/v2/tickets/{id}. json\
- u{email_address}:{密码}|金桥“。”
请求的输出现在看起来像这样:
{
“票”:{
“assignee_id”:123456,
“collaborator_ids”:[
35334,
234
],
“created_at”:“2099 - 07 - 20 - t22:55:29z”,
…
}
}
使用jq提取JSON数据
您还可以使用jq从JSON响应中提取特定属性。使用管道和点符号来指定属性。下面的示例使用jq提取票据对象assignee_id
财产。
旋度https://{子域名}.亚博zendesk.com/api/v2/tickets/{id}. json\
- u{email_address}:{密码}|金桥'.Ticket | . assignnee_id '
输出如下所示:
123456
使用逗号分隔多个属性。下面的示例使用jq提取assignee_id
和created_at
属性。
旋度https://{子域名}.亚博zendesk.com/api/v2/tickets/{id}. json\
- u{email_address}:{密码}|金桥'.Ticket | . assignnee_id, .created_at
输出如下所示:
123456
“2099 - 07 - 20 - t22:55:29z”