के बजाय LinkedHashMap लौटाएं मैं जीएसएन को EnumMap
ऑब्जेक्ट वापस करने में सक्षम बनाना चाहता हूं। मैं निम्नलिखित कोड का उपयोगजीएसओएन से जेसन वापस एनमैप
package sandbox;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.util.EnumMap;
import java.util.Map;
/**
*
* @author yccheok
*/
public class Sandbox {
public static void main(String[] args) throws InterruptedException {
testGson();
}
public static enum Country {
Malaysia,
UnitedStates
}
public static void testGson() {
Map<Country, String> enumMap = new EnumMap<Country, String>(Country.class);
enumMap.put(Country.Malaysia, "RM");
enumMap.put(Country.UnitedStates, "USD");
Gson gson = new Gson();
String string = gson.toJson(enumMap);
System.out.println("toJSon : " + string);
enumMap = gson.fromJson(string, new TypeToken<EnumMap<Country, String>>(){}.getType());
System.out.println("fromJSon : " + enumMap);
System.out.println("fromJSon : " + enumMap.getClass());
}
}
हालांकि, मैं निम्नलिखित
toJSon : {"Malaysia":"RM","UnitedStates":"USD"}
fromJSon : {Malaysia=RM, UnitedStates=USD}
fromJSon : class java.util.LinkedHashMap
भले ही मैं विशिष्ट करने के लिए इस्तेमाल किया था new TypeToken<EnumMap<Country, String>>(){}.getType()
हो रही है मैं चाहता हूँ EnumMap
बजाय LinkedHashMap
मैं कैसे कर सकते हैं EnumMap
वापस करने के लिए जीसन?
थोड़े अजीब है, मैं अपने कोड वास्तव में उपयोग करते हैं, लेकिन मैं अभी भी हो रही है LinkedHashMap मेरी तरफ। मैं जीसन-2.1 का उपयोग कर रहा हूँ। फर्क पड़ता है क्या? –
क्षमा करें। नवीनतम जीसन 2.2.3 का उपयोग सही काम करता है। –
@CheokYanCheng GSON 2.2.3 का उपयोग कर यह आपके लिए बिना किसी कोड परिवर्तन के बॉक्स के बाहर काम करता है? –