2

HTTP 要求の本文で blob を変換して、salesforce で JSON 文字列を受信しようとしています。ただし、ブロブを文字列に変換すると、リクエストに \ 文字が挿入され、解析できなくなります。

次に、文字列を取得してすべての \ 文字を削除しようとしました...どちらも機能しませんでした。

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 デシリアライザーは、エスケープ文字を含む文字列を解析できます。次のようにオブジェクトに逆シリアル化できます。

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 に答える