JSON

2012-10-10 8 views
5

に地図<文字列、文字列>の変換私はこのようなJavaでMap<String,String>を持っている:JSON

{card_switch=Master, issuing_bank=ICCI, card_Type=DebitCard} 

私はJSONオブジェクトには、このマップを解析するsimple json parserを使用しています。

私が試した:

Object json = JSONValue.parse(entry.getKey()); 

をしかし、私はエラーメッセージが表示されます:

Object json = JSONValue.parse(entry.getKey()); 
        ^
method JSONValue.parse(String) is not applicable 
    (actual argument Map<String,String> cannot be converted to String by method invocation conversion) 
method JSONValue.parse(Reader) is not applicable 
    (actual argument Map<String,String> cannot be converted to Reader by method invocation conversion) 

は、可能なJSONにMap<String,String>を変換することですか?

+0

はGSON http://code.google.com/p/google-gson/ – Abubakkar

+1

このページの例1.4を見てください、あなたが疲れてい.google.com/p/json-simple/wiki/EncodingExamples#Example_1-4 _-_ Encode_a_JSON_object _-_ Using_Map_and_streaming –

答えて

8

このページhttp://code.google.com/p/json-simple/wiki/EncodingExamples#Example_1-4_-_Encode_a_JSON_object_-_Using_Map_and_streamingの例1.4を見てください:

Map obj=new LinkedHashMap(); 
    obj.put("name","foo"); 
    obj.put("num",new Integer(100)); 
    obj.put("balance",new Double(1000.21)); 
    obj.put("is_vip",new Boolean(true)); 
    obj.put("nickname",null); 
    StringWriter out = new StringWriter(); 
    JSONValue.writeJSONString(obj, out); 
    String jsonText = out.toString(); 
    System.out.print(jsonText); 
11

またGsonライブラリでこのような何かを試すことができます:

package com.stackoverflow.works; 

import java.lang.reflect.Type; 
import java.util.HashMap; 
import java.util.Map; 

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

/* 
* @Author: sarath_sivan 
*/ 

public class MapToJsonConverter { 

    /* 
    * @Description: Method to convert Map to JSON String 
    * @param: map Map<String, String> 
    * @return: json String 
    */ 
    public static String convert(Map<String, String> map) { 
     Gson gson = new Gson(); 
     String json = gson.toJson(map); 
     return json; 
    } 

    /* 
    * @Description: Method to convert JSON String to Map 
    * @param: json String 
    * @return: map Map<String, String> 
    */ 
    public static Map<String, String> revert(String json) { 
     Gson gson = new Gson(); 
     Type type = new TypeToken<Map<String, String>>(){}.getType(); 
     Map<String, String> map = gson.fromJson(json, type); 
     return map; 
    } 

    /* 
    * @Description: Method to print elements in the Map 
    * @param: map Map<String, String> 
    * @return: void 
    */ 
    public static void printMap(Map<String, String> map) { 
     for (String key : map.keySet()) { 
      System.out.println("map.get(\"" + key + "\") = " + map.get(key)); 
     } 
    } 

    /* 
    * @Description: Method to print the JSON String 
    * @param: json String 
    * @return: void 
    */ 
    public static void printJson(String json) { 
     System.out.println("json = " + json); 
    } 

    /* 
    * @Description: Main method to test the JSON-MAP convert/revert logic 
    */ 
    public static void main(String[] args) { 
     Map<String, String> paymentCards = new HashMap<String, String>(); 
     paymentCards.put("card_switch", "Master"); 
     paymentCards.put("issuing_bank", "ICCI"); 
     paymentCards.put("card_Type", "DebitCard"); 

     String json = convert(paymentCards); //converting Map to JSON String 
     System.out.println("Map to JSON String"); 
     System.out.println("******************"); 
     printJson(json); 

     System.out.println(); 

     paymentCards = revert(json); //converting JSON String to Map 
     System.out.println("JSON String to Map"); 
     System.out.println("******************"); 
     printMap(paymentCards); 
    } 

} 

このような出力を見て:

Output

0

はこれを試してみてください。しかし、あなたはgsonライブラリが必要です:のhttp://コードを

Map<String, Object> map = new HashMap<>(); 
String value = new Gson().toJson(map); 
+0

これは私の答えでした。 – xBACP