2010-12-21 8 views
1

Ich benutze Xstream zu de/serialize Objekte zu JSON.xstream json: java.util.Properties in Objekt-Literal konvertieren

Ich möchte eine java.util.Properties serialisieren, aber ich möchte es in JavaScript als Objekt literal serialisiert werden.

I.e. Eigenschaften p = neue Eigenschaften(); p.setProperty ("a", "b"); p.setProperty ("x", "y");

soll umgewandelt werden:

{a: 'b', x: 'y'} 
+0

Möchten Sie auch alle "geerbten" Eigenschaften, die mit java.util.Properties geliefert werden, wie java.home? – jpkrohling

+2

du meinst '{" a ":" b "," x ":" y "}' – dogbane

Antwort

3

Es ist nicht leicht mit XStream, weil XStream erster Marschälle des Properties Objekt in Intermediär XML vor der XML zu JSON Konvertierung und die XML immer genau richtig hart ist.

Es wäre viel einfacher, die Eigenschaften zu durchlaufen und die JSON-Zeichenfolge direkt zu erstellen. Beispiel:

StringBuilder builder = new StringBuilder() ; 
builder.append('{'); 
Enumeration keys = props.keys(); 
while (keys.hasMoreElements()) { 
    String key = (String)keys.nextElement(); 
    String value = (String)props.get(key); 
    builder.append('"').append(key).append('"'); 
    builder.append(':'); 
    builder.append('"').append(value).append('"').append(','); 
} 
builder.deleteCharAt(builder.length()-1); 
builder.append('}'); 
String json = builder.toString();