Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
* Map
* @author jldupont
package com.cdf.front.types.client;
import java.util.Iterator;
import java.util.Set;
public class Map {
JSONObject jso=new JSONObject();
public Map() {}
public void putFromJso(JSONObject jso) {
Set<String> keys=jso.keySet();
Iterator<String> it=keys.iterator();
while(it.hasNext()) {
String;, jso.get(key).toString());
public void store(String key, String value) {
jso.put(key, new JSONString(value));
public String retrieve(String key) {
return jso.get(key).isString().stringValue();
* @todo write native method
public final void iterate(IMapVisitor<String> visitor) {
Set<String> keys=jso.keySet();
Iterator<String> it=keys.iterator();
while (it.hasNext()) {
visitor.visit(key, this.retrieve(key));

tbroyer commented Sep 2, 2011

Why extend JSONObject when you can wrap it? Also, "doing" things in a constructor is generally seen as bad practice (use a factory method or a distinct putAll(JSONObject) method instead).
Oh, and if you're going to "store" directly into a JSONObject, then I'd rather use JSNI (rather than wrapping everything in JSONValue-s, which adds unnecessary overhead; have a look at how JsoSplittable –which backs AutoBean on the client-side– works)


jldupont commented Sep 2, 2011

  1. Updated the gist based on your comment - Thanks!
  2. I am not using JSNI because it was causing me grief with regards to the generic IMapVisitor. Anyhow this class doesn't need to be very optimized.

Thanks :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment