Библиотека для кодирования/декодирования от json до java.util. Карта?

Кто-либо знает библиотеку Java, которая могла легко закодировать Карты Java в объекты json и наоборот?

ОБНОВЛЕНИЕ

Поскольку причины не могли объяснить (и я иногда ненавижу), я не могу использовать дженерики на своей среде.

То, что' я пытаюсь сделать, должно иметь что-то вроде этого:

Map a = new HashMap();
a.put( "name", "Oscar" );

Map b = new HashMap();
b.put( "name", "MyBoss"); 
a.put( "boss",  b ) ;


List list = new ArrayList();
list.add( a );
list.add( b );


 String json = toJson( list );
 // and create the json:
 /*
    [
       {
         "name":"Oscar",
         "boss":{
              "name":"MyBoss"
         }
        },
        {
            "name":"MyBoss"
        }
     ]

  */ 

И смогите иметь его снова как список карт

 List aList = ( List ) fromJson( jsonStirng );
15
задан OscarRyz 23 March 2010 в 18:30
поделиться

4 ответа

JSON-Simple выглядит относительно простым в использовании (примеры ниже).

Сопоставить с JSON:

  Map map = new HashMap();
  map.put("name", "foo");
  map.put("nickname", "bar");
  String jsonText = JSONValue.toJSONString(map);

JSON для списка / сопоставления:

  String s = yourJsonString;
  List list = (JSONArray) JSONValue.parse(s);       
  Map map = (JSONObject) list.get(0);
14
ответ дан 1 December 2019 в 00:10
поделиться

Для этого вы можете использовать Google Gson . Он имеет отличную поддержку универсальных типов .

Вот SSCCE :

package com.stackoverflow.q2496494;

import java.util.LinkedHashMap;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class Test {

   public static void main(String... args) {
        Map<String, String> map = new LinkedHashMap<String, String>();
        map.put("key1", "value1");
        map.put("key2", "value2");
        map.put("key3", "value3");
        Gson gson = new Gson();

        // Serialize.
        String json = gson.toJson(map);
        System.out.println(json); // {"key1":"value1","key2":"value2","key3":"value3"}

        // Deserialize.
        Map<String, String> map2 = gson.fromJson(json, new TypeToken<Map<String, String>>() {}.getType());
        System.out.println(map2); // {key1=value1, key2=value2, key3=value3}
    }

}
33
ответ дан 1 December 2019 в 00:10
поделиться

Список хороших библиотек JSON на Java можно просмотреть на сайте Json.org .

Собственная реализация JSon.org JSONObject может это сделать. Из их JavaDoC

 /**
     * Construct a JSONObject from a Map.
     * 
     * @param map A map object that can be used to initialize the contents of
     *  the JSONObject.
     */
    public JSONObject(Map map);

вы можете сделать

JSONObject json = new JSONObject(map);

Чтобы преобразовать строку JSON обратно в объект ... .

String jsonString = "{\"name\" : \"some name\", \"age\" : 10}";
JSONObject json = new JSONObject(jsonString);

, и вы можете получить доступ к таким значениям, как:

int age = json.getInt("age");

Конструктор JavaDoC

Создайте объект JSONObject из исходной текстовой строки JSON. Это наиболее часто используемый конструктор JSONObject.

Параметры: source Строка, начинающаяся с { (левая фигурная скобка) и заканчивающаяся } (правая фигурная скобка).

4
ответ дан 1 December 2019 в 00:10
поделиться

Мы используем http://json-lib.sourceforge.net/ в нашем проекте, он отлично работает.

1
ответ дан 1 December 2019 в 00:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: