Vous voulez vraiment mettre JSON dans vos URL ?!
Quoi qu'il en soit:
public String getToken(MyPlace place) {
JSONObject obj = new JSONObject();
obj.put("id", new JSONString(place.getId());
return obj.toString();
}
public MyPlace getPlace(String token) {
JSONObject obj = JSONParser.parseStrict(token).isObject();
return new MyPlace(obj.get("id").isString().stringValue());
}
Vous pouvez obtenir les mêmes en utilisant AutoBeans; dans tous les cas: copier des choses dans et hors de votre lieu.
Comme alternative, vous pouvez bien sûr avoir votre place être soutenu par un JSONObject/AutoBean:
class MyPlace extends Place {
public static class Tokenizer implements PlaceTokenizer<MyPlace> {
public String getToken(MyPlace place) {
return myPlace.jsonObject.toString();
}
public Place getPlace(String token) {
return new MyPlace(JSONParser.parseStrict(token).isObject());
}
}
private final JSONObject jsonObject;
public MyPlace() {
this(new JSONObject());
}
public MyPlace(JSONObject jsonObject) {
this.jsonObject = jsonObject;
}
public String getId() { return jsonObject.get("id").isString().stringValue(); }
public void setId(String id) { jsonObject.put("id", new JSONString(id)); }
}
Note: Tous les travaux ci-dessus bien mieux avec AutoBeans; la gestion des erreurs est un PITA avec JSONObject, et il ne fait pas non plus de code très lisible.
Une sorte de générateur de code peut aider ici si vous avez beaucoup d'endroits.
merci, la fonctionnalité autobean semble être exactement ce dont j'ai besoin –