2016-03-28 19 views
-1

メッセージを逆シリアル化しようとしていますが、以下のステートメントの例外が発生しています。スラッシュはdeserialize json中に受け入れられません

Object key = gson.fromJson("40280381-3d27-5493-013d-4be146935c5c_abcdefg/ijklmnop", Class.forName("java.lang.String")); 

私はこのコードが正常に動作しているスラッシュを削除する場合は、例外が、文字列値に起因する/に発生しています。しかし、私は文字列の値に/が必要です、これで私を助けてください。

実際のメソッド

private void fillTheMap(JsonParser jp, Map<Object, Object> map) { 
    JsonToken jt = jp.nextToken(); 
    while ((jt = jp.nextToken()) != JsonToken.END_ARRAY) { 
     // Get the key. 
     jt = jp.nextToken(); 

     String keyTypeName = jp.getCurrentName(); 
     keyTypeName = keyTypeName.replace(":mapKey", ""); 
     Class keyType = Class.forName(keyTypeName); 

     jt = jp.nextToken(); 

     Object key = gson.fromJson(jp.getText(), keyType); 

     Object value = deSerIze(jp); 
     map.put(key, value); 

     jt = jp.nextToken(); 
    } 
} 

例外

com.google.gson.stream.MalformedJsonException:使用JsonReader.setLenient(真の)不正な形式のJSONを受け入れるように

+1

'gson.fromJson' ...問題はスラッシュではなく、文字列全体です... JSONではありません –

+1

あなたが望むものが混乱しています。Gsonを使用して文字列を文字列に変換する実際のコードとJSONオブジェクトを[mcve] –

+1

に表示してください。いいえ、実際はありません。あなたは何をしているのか分かりませんか?既に文字列があります。なぜあなたはGsonでそれを非直列化しようとしていますか? –

答えて

-1

私が知る限り、JSONのスラッシュ文字はエスケープする必要がありますed。 /\/に置き換えてください。

また、Class.forName("java.lang.String")の代わりにString.classを使用すると、タイプセーフです。

+1

同じように試しましたが、同じ例外が発生しました – user2723039

関連する問題