8

私はMap<String,String>このようなJavaを持っています:

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

単純なjsonパーサーを使用して、このマップをjsonオブジェクトに解析しています。

私は試した :

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)

Map<String,String>jsonに変換することは可能ですか?

4

4 に答える 4

17

GsonLibraryで次のようなことを試すこともできます。

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

}

出力は次のようになります。

出力

于 2012-10-10T12:50:30.490 に答える
10

このページの例1.4をご覧ください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);
于 2012-10-10T10:57:27.793 に答える
3

これを試して。しかし、gsonライブラリが必要ですか?

Map<String, Object> map = new HashMap<>();
String value = new Gson().toJson(map);
于 2016-02-11T20:56:46.463 に答える
-2

それは可能であるはずですが、私はあなたがそれを間違った方法で保持していると思います:解析はjson-textコンテンツを解析し、Javaと同等の(「デコード」)を提供します

ホームページのサンプルをご覧ください: http ://code.google.com/p/json-simple/wiki/EncodingExamples#Example_1-3 _-_ Encode_a_JSON_object _-_ Using_Map

于 2012-10-10T10:58:42.800 に答える