Вопрос

Ну, я должен признаться, что я не хорош в общем типе в Java

Я написал класс Json Serialize / Deserialize в C # с использованием JavaScriptSerializer

    private static JavaScriptSerializer js = new JavaScriptSerializer();

    public static T LoadFromJSONString<T>(string strRequest)
    {
        return js.Deserialize<T>(strRequest);
    }

    public static string DumpToJSONString<T>(T rq)
    {
        return js.Serialize(rq);
    }

Это хорошо работает в C #. Теперь я пытаюсь конвертировать или по крайней мере, написать еще один класс Json Serialize / Deserialize в Java. я пробовал FlexJSON а также Google-Gson Но я не знаю, как указатьu003CT> в Яве.

Может кто-нибудь здесь помочь мне? Кстати, я предпочитаю Google-Gson

Это было полезно?

Решение

В Java вы должны пройти фактический класс стерта типа, а не просто параметр ввести, поэтому связыватели данных знают, какой тип использования; Так что-то вроде:

public static T LoadFromJSONString<T>(string strRequest, Class<T> type)
{
    Gson gson = new Gson();
    return gson.fromJson(strRequest, type);
}

Но это обычно нужно просто для десериализации; При сериализации у вас есть экземпляр с классом, которым можно использовать библиотеки.

Кстати, одна другая хорошая библиотека Java JSON, которую вы можете посмотреть, используя Джексон; Однако для этого конкретного примера все библиотеки вы упоминаете, должны работать.

Другие советы

Мы думая, что это через я не думаю, что есть способ решить это так же красиво, как это сделано в вашем C # код. Это из-за типа стирания, сделанного Java Compiler.

Лучшее решение для вас, вероятно, будет использовать объект GSON в месте, где вы знаете тип объекта, который вам нужен для сериализации / десериализации.

Если вы не увлекаетесь при изготовлении экземпляров объекта GSON каждый раз, когда вы, конечно, можете, по меньшей мере, сохранить, поскольку он не нуждается в параметрах типа при создании.

Это должно работать:

import com.google.gson.Gson;
public class GenericClass {

    private static Gson gson = new Gson(); 

    public static <T> T loadFromJSONString(String strRequest)
    {
        return (T) gson.fromJson(strRequest, T.class);
    }

    public static <T> String dumpToJSONString(T rq)
    {
        return gson.toJson(rq);
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top