xstream json: преобразовать java.util.Properties в литерал объекта - PullRequest
1 голос
/ 21 декабря 2010

Я использую xstream для де / сериализации объектов в json.

Я хочу сериализовать java.util.Properties, но хочу, чтобы он был сериализован в javascript как литерал объекта.

т.е. Свойства p = новые свойства (); p.setProperty ("a", "b"); p.setProperty ("x", "y");

следует преобразовать в:

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

1 Ответ

3 голосов
/ 21 декабря 2010

Это нелегко с XStream, потому что XStream сначала маршалирует объект Properties в промежуточный XML, прежде чем преобразовать XML в JSON и получить правильный XML очень сложно.

Было бы намного проще зацикливаться на свойствах и напрямую создавать строку JSON. Например, вот так:

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();
...