2012-10-10 32 views
5

tengo Map<String,String> en Java como esto:Map <String, String> JSON en

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

estoy usando el simple json parser para analizar este mapa en objeto JSON.

me trataron:

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

pero me sale un mensaje de error:

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) 

¿Eso es posible convertir Map<String,String> en JSON?

+0

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

+1

un vistazo a ejemplo 1.4 en esta página: http: // código .google.com/p/json-simple/wiki/EncodingExamples # Example_1-4 _-_ Encode_a_JSON_object _-_ Using_Map_and_streaming –

Respuesta

8

Tenga una mirada en el ejemplo 1.4 en esta página http://code.google.com/p/json-simple/wiki/EncodingExamples#Example_1-4_-_Encode_a_JSON_object_-_Using_Map_and_streaming:

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

también puede intentar algo como esto con Gson Biblioteca:

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); 
    } 

} 

La mirada salida como esta:

Output

0

Prueba esto. Pero qué necesita la biblioteca GSON:

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

¡Esta fue la respuesta para mí! – xBACP

Cuestiones relacionadas