在JAVA中读取JSON格式的字符串

时间:2016-09-06 09:27:25

标签: java json

我想将字符串作为JSON格式读取(它不一定是JSON,但它看起来像JSON格式)并将其表示为hashMap(键:关键字,值:COUNT)

例如,假设我有一个字符串。

String s ={"Welcome":1,"Hi":2,"Hello":1,"Jin":1}; 

然后,进行分类。(对于Hashmap键 - > gt; word,value - > number)。最终结果如下所示。

HashMap<String,String> result;

result.get("Jin"); // output : 1
result.get("Hi"); // output : 2

但我的代码,它没有正确的方式。

JSONParser parser = new JSONParser();
        Object obj = parser.parse(s);
        JSONArray array = new JSONArray();
        array.add(obj);

        System.out.println(array.get(0)); //output: {"Welcome":1,"Hi":2,"Hello":1,"Jin":1}

可以使用JSON吗?或者我应该逐个拆分它们? (例如将它们分为“,”首先和“:”......等等)

请给我你的好意见。

5 个答案:

答案 0 :(得分:1)

尝试使用以下代码段。

public static void main(final String[] args) throws ParseException {
        String s = "{\"Welcome\":1,\"Hi\":2,\"Hello\":1,\"Jin\":1}";
        JSONParser parser = new JSONParser();
        HashMap<String, Long> obj = (HashMap<String, Long>) parser.parse(s);
        for(String key : obj.keySet()) {
            System.out.println("Key:" + key + " value:" + obj.get(key));
        }
    }

答案 1 :(得分:1)

您可以使用org.json来满足您的要求。

E.g。

String s = "{\"Welcome\":1,\"Hi\":2,\"Hello\":1,\"Jin\":1}";
JSONObject result = new JSONObject(s);

System.out.println(result.get("Jin")); // output : 1
System.out.println(result.get("Hi")); // output : 2

答案 2 :(得分:0)

它是json object而不是array ...

试试这个:

JSONObject jsonObj = new JSONObject(jsonString.toString());

答案 3 :(得分:0)

最容易实现的是使用JACKSON解析器。

from Libpy import Libpy
import boto.ec2
import sys
if __name__=='__main__':

  a = B()
  Libpy().multithreading(ec2list1,a.create_amibkp(ec2listname,ec2list1))

打印:

import threading
import time

class Libpy:

    def multithreading(l, function):
        threads = []
        for z,v in enumerate(l):
            dummy = z
            t = threading.Thread(target=function, args=(v,))
            threads.append(t)
            t.start()

答案 4 :(得分:0)

使用Google JSON即gson库(2.6.2),您的问题将得到解决。

请查看以下代码

import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;

import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;

public class StackOverFlowQuestionset {

    public static void main(String[] args) {
        String s ="{\"Welcome\":1,\"Hi\":2,\"Hello\":1,\"Jin\":1}"; 

        HashMap<String,String> result=new HashMap<String,String>();

        Gson gson = new Gson();

        JsonElement jsonElement = gson.fromJson(s, JsonElement.class);

        JsonObject jsonObject = jsonElement.getAsJsonObject();

        Set<Entry<String, JsonElement>> jsonEntrySet = jsonObject.entrySet();

        for(Entry<String, JsonElement> entry:jsonEntrySet){
            result.put(entry.getKey(), entry.getValue().toString());
        }

        System.out.println(result.get("Jin"));
        System.out.println(result.get("Welcome"));
        System.out.println(result.get("Hi"));
    }
}