我们如何准备 "valid JSON" from Linkedin Share API
How can we prepare "valid JSON" from Linkedin Share API
最近,我们从日志中看到:
httpRes status received 400 Bad Request for this linkedinToken AQUz3sCODu312rHNtNfuns3awy0xoUxxxxxxxxxxx.
With Request: {"content":{"submitted-url":"http://mpg.smh.re/2Ra","title":"Gestionnaire sinistre H/F − Belgique ","description":"Responsable de la gestion de dossiers sinistres dans leur intégralité,
vous serez en contact avec de nombreux interlocuteurs (compagnies
d’assurances, clients et bureaux locaux).","submitted-image-url":"http://www.morganphilipsexecutivesearch.com/wp-content/uploads/2014/09/fyte-smarpshare.jpg"},"visibility":{"code":"anyone"},"comment":"FYTE, cabinet de recrutement spécialisé recrute pour l’un de ses clients situé en Belgique un Gestionnaire sinistre H/F."}.
Response body: {
"errorCode": 0,
"message": "Couldn't parse Json body: Illegal unquoted character ((CTRL-CHAR, code 10)): has to be escaped using backslash to be included in string value\n at [Source: java.io.StringReader@42ea5bc1; line: 1, column: 187]",
"requestId": "0GYQWP14U9",
"status": 400,
"timestamp": 1423490252325
}
```
LinkedIn API 表示无法解析 JSON 正文。我们怀疑 JAVA JSON 解析器不处理字符“é”或“’”。
我的问题是还有其他 special/unicode 个字符是我们应该注意的吗?因为这个 JSON 正文是由 Go 的内置编组的。
更新:我最近发现 "line feed" ("CTRL-CHAR, code 10") 是这个问题的关键。 "Line feed" 个字符出现在“...leur intégralité”之后。我现在的问题是为什么 Go 内置 JSON 编组器不处理
JSON 可以处理 Unicode 字符...只要它们被正确编码。
但是错误消息显示:
Illegal unquoted character ((CTRL-CHAR, code 10))
这好像是说你在JSON中有一个控制字符。 JSON 语法规定字符串中不允许使用未转义的控制字符。
现在如果我们假设10是十进制,那么它就是一个换行符。所以我会在 JSON 中从一开始就寻找大约 187 个字符的原始换行符。
My question now is that why doesn't Go built-in JSON marshaller handle that.
两种可能性:
- 这是一个错误,或者
- 你没有正确使用它。
最近,我们从日志中看到:
httpRes status received 400 Bad Request for this linkedinToken AQUz3sCODu312rHNtNfuns3awy0xoUxxxxxxxxxxx.
With Request: {"content":{"submitted-url":"http://mpg.smh.re/2Ra","title":"Gestionnaire sinistre H/F − Belgique ","description":"Responsable de la gestion de dossiers sinistres dans leur intégralité,
vous serez en contact avec de nombreux interlocuteurs (compagnies
d’assurances, clients et bureaux locaux).","submitted-image-url":"http://www.morganphilipsexecutivesearch.com/wp-content/uploads/2014/09/fyte-smarpshare.jpg"},"visibility":{"code":"anyone"},"comment":"FYTE, cabinet de recrutement spécialisé recrute pour l’un de ses clients situé en Belgique un Gestionnaire sinistre H/F."}.
Response body: {
"errorCode": 0,
"message": "Couldn't parse Json body: Illegal unquoted character ((CTRL-CHAR, code 10)): has to be escaped using backslash to be included in string value\n at [Source: java.io.StringReader@42ea5bc1; line: 1, column: 187]",
"requestId": "0GYQWP14U9",
"status": 400,
"timestamp": 1423490252325
}
```
LinkedIn API 表示无法解析 JSON 正文。我们怀疑 JAVA JSON 解析器不处理字符“é”或“’”。
我的问题是还有其他 special/unicode 个字符是我们应该注意的吗?因为这个 JSON 正文是由 Go 的内置编组的。
更新:我最近发现 "line feed" ("CTRL-CHAR, code 10") 是这个问题的关键。 "Line feed" 个字符出现在“...leur intégralité”之后。我现在的问题是为什么 Go 内置 JSON 编组器不处理
JSON 可以处理 Unicode 字符...只要它们被正确编码。
但是错误消息显示:
Illegal unquoted character ((CTRL-CHAR, code 10))
这好像是说你在JSON中有一个控制字符。 JSON 语法规定字符串中不允许使用未转义的控制字符。
现在如果我们假设10是十进制,那么它就是一个换行符。所以我会在 JSON 中从一开始就寻找大约 187 个字符的原始换行符。
My question now is that why doesn't Go built-in JSON marshaller handle that.
两种可能性:
- 这是一个错误,或者
- 你没有正确使用它。