2015-04-28 8 views
5

द्वारा मूल्य पूछने के लिए जावा प्रोग्राम में JSON फ़ाइल का प्रतिनिधित्व करता है, मैं अपने जावा प्रोग्राम में this file का प्रतिनिधित्व करना चाहता हूं।कुंजी जावा

मैं जो करना चाहता हूं वह जल्दी से "कुंजी" मान से खोजता है, उदाहरण के लिए, मान P26 मान दिया गया है, मैं spouse वापस करना चाहता हूं।

शायद मैं HashMap के रूप में इसे जीएसएन का उपयोग करके पढ़ सकता हूं जैसा कि मैंने this प्रोग्राम के साथ किया था।

लेकिन क्या इस wonky संरचना के बारे में क्या करने के लिए:

{ 
    "properties": { 
     "P6": "head of government", 
     "P7": "brother", 
     ... 

कैसे मुझे लगता है कि अच्छी तरह से एक HashMap में फिट कर सकते हैं? HashMap भी सबसे अच्छा विकल्प है?


मैं इन सबसे छुटकारा यह करने के लिए यह आसान बना दिया है:

{ 
    "P6": "head of government", 
    "P7": "brother", 
    "P9": "sister", 
    "P10": "video", 
    "P14": "highway marker", 
    "P15": "road map", 
    "P16": "highway system", 
    "P17": "country", 
    "P18": "image", 

मैं इस कोड का उपयोग करने की कोशिश की है, लेकिन यह आउटपुट null

/* 
* P values file 
*/ 
String jsonTxt_P = null; 

File P_Value_file = new File("properties-es.json"); 
//read in the P values 
if (P_Value_file.exists()) 
{ 
    InputStream is = new FileInputStream("properties-es.json"); 
    jsonTxt_P = IOUtils.toString(is); 
} 

Gson gson = new Gson(); 
Type stringStringMap = new TypeToken<Map<String, String>>(){}.getType(); 
     Map<String,String> map = gson.fromJson(jsonTxt_P, stringStringMap); 
     System.out.println(map); 
+0

जावा इनबिल्ट फ़ंक्शन के गुणों का उपयोग क्यों न करें? http://www.tutorialspoint.com/java/java_properties_class.htm देखें – BlackPOP

उत्तर

1

यह क्योंकि काम नहीं करता है वह फ़ाइल Map<String, String> नहीं है। इसमें एक गुण तत्व है, जिसमें मैपिंग और एक अनुपलब्ध तत्व है, जिसमें एक सरणी है। यह विसंगति जेसन को शून्य वापस करने का कारण बन जाएगी, जो आप देख रहे हैं। , Deserialize करने के लिए

public class MyData { 
    Map<String, String> properties; 
    List<String> missing; 
} 

और फिर, कार्य करें:: इसके बजाय, ऐसा करने की कोशिश

MyData data = gson.fromJson(jsonTxt_P, MyData.class); 
Map<String, String> stringStringMap = data.properties; 

इस डेटा संरचना json की संरचना से मेल कर देगा, और json ठीक से deserialize करने के लिए अनुमति देते हैं।

संबंधित मुद्दे