2012-06-20 3 views
4

У меня есть джерси клиент, получая JSON из источника, что мне нужно, чтобы попасть в правильно отформатированный JSON:Как правильно форматировать строку JSON в java?

My JSON Строка выглядит как folllowing когда захват его с помощью запроса HTTP:

{ 
    "properties": [ 
     { 
      someproperty: "aproperty", 
      set of data: { 
       keyA: "SomeValueA", 
       keyB: "SomeValueB", 
       keyC: "SomeValueC" 
      } 
     } 
    ] 
} 

I У меня проблемы, потому что json должен быть правильно отформатирован, а keyA, keB и keyC не окружены кавычками. Есть ли какая-нибудь библиотека, которая помогает добавлять кавычки или какой-то лучший способ превратить эту строку в правильно отформатированный json? Или если есть простой способ преобразовать это в объект json без написания группы классов с переменными и списками, которые соответствуют входящей структуре?

+0

Jackson - это такая библиотека. – bmargulies

+0

Хотелось бы привести пример того, как такая строка может быть преобразована в JSON. Из того, что я знаю, Джексон требует, чтобы строка JSON была правильно отформатирована (т. Е. Все ключи требуют двойных кавычек вокруг ключа) – Rolando

ответ

4

вы можете использовать json-lib. это очень удобно! Вы можете построить вашу строку JSON, как это:

JSONObject dataSet = new JSONObject(); 
dataSet.put("keyA", "SomeValueA") ; 
dataSet.put("keyB", "SomeValueB") ; 
dataSet.put("keyC", "SomeValueC") ; 

JSONObject someProperty = new JSONObject(); 
dataSet.put("someproperty", "aproperty") ; 

JSONArray properties = new JSONArray(); 
properties.add(dataSet); 
properties.add(someProperty); 

и, конечно, вы можете получить JSON строку, просто вызвав properties.toString()

+0

Я хочу взять существующую строку json и преобразовать ее в правильно отформатированную строку json с двойными кавычками. – Rolando

+0

try 'JSONObject.fromObject (jsonString) .toString' – Cruis

0

Вы можете использовать argo, простой JSON-анализатор и генератор в Java

3

Мне нравится Flexjson, и используя lots of initilizers:

public static void main(String[] args) { 

    Map<String, Object> object = new HashMap<String, Object>() { 
     { 
      put("properties", new Object[] { new HashMap<String, Object>() { 
       { 
        put("someproperty", "aproperty"); 
        put("set of dada", new HashMap<String, Object>() { 
         { 
          put("keyA", "SomeValueA"); 
          put("keyB", "SomeValueB"); 
          put("keyC", "SomeValueC"); 
         } 
        }); 
       } 
      } }); 
     } 
    }; 

    JSONSerializer json = new JSONSerializer(); 
    json.prettyPrint(true); 
    System.out.println(json.deepSerialize(object)); 
    } 

приводит :

{ 
    "properties": [ 
    { 
     "someproperty": "aproperty", 
     "set of dada": { 
      "keyA": "SomeValueA", 
      "keyB": "SomeValueB", 
      "keyC": "SomeValueC" 
     } 
    } 
    ] 
} 
3

Ваша строка не JSON. Это нечто похожее на JSON. Нет никакой формы JSON, которая делает эти цитаты необязательными. AFAIK, нет библиотеки, которая будет читать вашу строку и справляться с отсутствующими кавычками, а затем вертеть ее обратно правильно. Вам нужно найти код, который произвел это, и отремонтировать его для создания реального JSON.

Смежные вопросы