jsonで長すぎる文字列を切り捨てたいと思います。gsonを使用してjsonで長すぎる文字列を切り捨てます。
これを行うには、新しいタイプのアダプタをString型用に登録したいと思います。このデシリアライザ内で、長すぎる文字列をチェックして制限します。
Gson gson = new GsonBuilder().registerTypeAdapter(String.class, new CuttingStringDeserializer()).create();
JsonElement element = gson.fromJson(jsonString, JsonElement.class);
return new GsonBuilder().setPrettyPrinting().create().toJson(element);
私が処理するJSONファイルの例:私はJSONの構造を知らないが、私はすべてフィルタリングする一般的に
{
"myString": "this strin",
"other": "this is ok"
}
:
{
"myString": "this string is too long - cut it",
"other": "this is ok"
}
所望の出力文字列の出現。
デシリアライザ:
public class CuttingStringDeserializer implements JsonDeserializer<String> {
@Override
public String deserialize(final JsonElement json, final Type typeOfT, final JsonDeserializationContext context)
throws JsonParseException {
String s = json.getAsString();
if(s.lenght() > MAX_CONTENT_LENGTH){
return s.substring(0, MAX_CONTENT_LENGTH);
}else{
return s;
}
}
残念ながら私のカスタムデシリアライザがgsonによって呼び出されません。
もう1つ - 私はJSONの構造を知らない – pixel
この場合は全く意味がありません。 jsonの構造がわからない場合は、なぜ静的型付けされたPOJOでJson文字列を変換するために 'gson'が必要ですか?文字列を処理します。 – Divers
私はjson内で文字列値を制限したいので、基本レベルでjsonを解析する必要があります。 – pixel