2

我试图通过转换 Http 请求正文中的 blob 来接收 Salesforce 中的 JSON 字符串。但是,当我将 blob 转换为字符串时,会在请求中插入 \ 字符,这会阻止我进行解析。

然后我尝试获取字符串并删除所有 \ 字符......这也不起作用。

RestRequest req = RestContext.request;
    Blob jsonBlob = req.requestBody;
    String jsonString = jsonBlob.toString();
    return jsonString;

原始字符串(作为 blob 接收的字符串)如下所示:

{"putTimeCard":{"timecard":{"timeCardID": "","employeeID": ""}}

并在转换为 salesforce 字符串并分配给 jsonString 后更改为:

{\"putTimeCard\":{\"timecard\":{\"timeCardID\": \"\",\"employeeID\": \"\"}}

有没有人找到解决方案?谢谢

4

1 回答 1

2

JSON Deserializer 可以解析带有转义字符的字符串。您可以像这样反序列化为对象:

String jsonString = '{\"putTimeCard\":{\"timecard\":{\"timeCardID\": \"\",\"employeeID\": \"\"}}}'
Timecard t = (Timecard) JSON.deserialize(jsonString, Type.forName('Timecard'));

或者,如果您只想要对象地图,您可以执行以下操作:

String jsonString = '{\"putTimeCard\":{\"timecard\":{\"timeCardID\": \"\",\"employeeID\": \"\"}}}'
Map<String, Object> m = (Map<String, Object>) JSON.deserializeUntyped(jsonString);
于 2012-07-11T17:33:51.017 回答