在Java中从HashMap解析和访问JSON以下的数据格式

在Java中从HashMap解析和访问JSON以下的数据格式,java,json,hashmap,Java,Json,Hashmap,从Java中的HashMap解析并访问JSON数据格式,以验证键与其值的映射 下面是JSON字符串: { "Inputs": { "TSVInput": { "ColumnNames": ["Bearing_11", "Bearing_12", "Bearing_21", "Bearing_22", "Bearing_31", "Bearing_32", "Bearing_41", "Bearing_42"], "Value

从Java中的HashMap解析并访问JSON数据格式,以验证键与其值的映射

下面是JSON字符串:

{
    "Inputs": {
        "TSVInput": {
            "ColumnNames": ["Bearing_11", "Bearing_12", "Bearing_21", "Bearing_22", "Bearing_31", "Bearing_32", "Bearing_41", "Bearing_42"],
            "Values": [[0.071, -0.054, 0.015, -0.144, -0.227, 0.012, -0.076, -0.073]]
        }
    },
    "GlobalParameters": {}
}

下面的源代码不进行映射&在访问特定字段时提供null值。我对如何解析这个嵌套的JSON数据感到困惑

File file = null;
            try {
                BufferedReader br = new BufferedReader(new FileReader(fullFileName));

                String readLine = "";
                System.out.println("Reading file using Buffered Reader");

               while ((readLine = br.readLine()) != null) {
                        //System.out.println(readLine);
                        String jsonString = readline;

                        //System.out.println(jsonString);
                        Gson gson = new Gson();
                        HashMap<String, Object> myMap = gson.fromJson(jsonString, new TypeToken<HashMap<String, Object>>(){}.getType());
                        System.out.println(myMap.get(1));
}
File文件=null;
试一试{
BufferedReader br=新的BufferedReader(新文件读取器(fullFileName));
字符串readLine=“”;
System.out.println(“使用缓冲读取器读取文件”);
而((readLine=br.readLine())!=null){
//System.out.println(读线);
字符串jsonString=readline;
//System.out.println(jsonString);
Gson Gson=新的Gson();
HashMap myMap=gson.fromJson(jsonString,new-TypeToken(){}.getType());
System.out.println(myMap.get(1));
}

您可以同时使用bson和绕过hashmap。我很好奇人们是如何使用hashmap做到这一点的

 //import java.util.ArrayList;
 //import org.bson.Document;
加载您的json

 Document root = Document.parse("{ \"Inputs\" : { \"TSVInput\" : { \"ColumnNames\" : [\"Bearing_11\", \"Bearing_12\", \"Bearing_21\", \"Bearing_22\", \"Bearing_31\", \"Bearing_32\", \"Bearing_41\", \"Bearing_42\"], \"Values\" : [[0.071, -0.054, 0.015, -0.144, -0.227, 0.012, -0.076, -0.073]] } }, \"GlobalParameters\" : { } }");
您可以将所有json对象转换为适当的类型

 System.out.println(((String)((ArrayList)((Document)((Document)root.get("Inputs")).get("TSVInput")).get("ColumnNames")).get(0)));
 System.out.println(((String)((ArrayList)((Document)((Document)root.get("Inputs")).get("TSVInput")).get("ColumnNames")).get(1)));
 System.out.println(((String)((ArrayList)((Document)((Document)root.get("Inputs")).get("TSVInput")).get("ColumnNames")).get(2)));
 System.out.println(((String)((ArrayList)((Document)((Document)root.get("Inputs")).get("TSVInput")).get("ColumnNames")).get(3)));
 System.out.println(((String)((ArrayList)((Document)((Document)root.get("Inputs")).get("TSVInput")).get("ColumnNames")).get(4)));
 System.out.println(((String)((ArrayList)((Document)((Document)root.get("Inputs")).get("TSVInput")).get("ColumnNames")).get(5)));
 System.out.println(((String)((ArrayList)((Document)((Document)root.get("Inputs")).get("TSVInput")).get("ColumnNames")).get(6)));
 System.out.println(((String)((ArrayList)((Document)((Document)root.get("Inputs")).get("TSVInput")).get("ColumnNames")).get(7)));
 System.out.println(((int)((ArrayList)((Document)((Document)root.get("Inputs")).get("TSVInput")).get("Values")).get(0)));

myMap
有字符串键,您正在使用
Integer
访问它?-
myMap.get(1)
您想从json中获取什么值?是否要检查键为“Bearing_11”的hashmap中是否有0.071作为值,依此类推?@pvpkiran是的,我想检查每个字段的值,并且我已经修改了代码。