java - 将 JSON 数组读入 Java 数组/列表/映射

标签 java arrays json

所以我有这么多代码要开始(我包含了导入,因为我认为你可能想看看我导入的内容):

import java.sql.Array;
import java.util.Map;

import org.json.simple.*;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

import dataProcessing.Config.Config;

import java.io.*;

public class Reader {
private String file_path;
private FileReader fReader;

public Reader(String filePath) {
    this.file_path = filePath;
    try {
        fReader = new FileReader(file_path);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public Config read() {
    Config c = new Config();
    JSONParser parser = new JSONParser();
    Object obj = null;
    try {
        obj = parser.parse(fReader);
    } catch (Exception e){
        //ignore this
    }
    JSONObject jsonobj = (JSONObject) obj;
    if (jsonobj != null) {
        c.dailyWorkTime = (Long) jsonobj.get("dailyWorkTime");
        c.dburl = (String) jsonobj.get("db_url");
        c.username = (String) jsonobj.get("username");
        c.password = (String) jsonobj.get("password");
        c.millis = (Long) jsonobj.get("millis");
    }
    return c;
}

}

重要的是,现在我无法在 JSON 文件中写入数组。基本上我不能做这样的事情:

{
"database_info": {
    "db_url": "hi",
    "username": "root",
    "password": "root"
},
"system_configuration": {
    "dailyWorkTime": 22,
    "millis": 600000
},
"entries": {
    "organization": [
        "orgid","orgname","orgprojects"
    ],
    "store" : [
        "stid","stname","st_belong_org"
    ],
    "customers" :[
        "phonenumber","facebookid","twitterid","instagramid"
    ]
}
}

反正其他的都不重要。 我真正需要解析的唯一东西是“条目”,如 String[][] 或 Map 之类的东西。 现在要使用 jsonobj.get() 我必须在 json 文件中有直接条目名称。 有人可以帮忙吗? :D 谢谢。

最佳答案

不知道这是否有帮助,但我使用这个解析 json:

 List<Map<String, String>> DataStruct = new ArrayList<Map<String, String>>();

JSONObject jSONObject = new JSONObject(Result);             
                    JSONArray entriesArr = jSONObject.getJSONArray("entries");
                    ItemsThisPage = entriesArr.length();
                      for (int i=0; i<ItemsThisPage; i++)
                      {
                          // FOR EACH ENTRY
                          JSONObject OneEntry = entriesArr.getJSONObject(i);
                          int OneEntrySize = OneEntry.length();
                          JSONArray EntKey = OneEntry.names(); 
                           Map<String, String> JsonItem = new HashMap<String, String>();
                          for (int j=0; j<OneEntrySize;j++)
                          {   // FOR EACH ITEM IN AN ENTRY
                              EntVal = EntKey.getString(j);
                              GenCell = OneEntry.opt(EntVal).toString();
                              JsonItem.put(EntVal, GenCell);            
                          }                       
                          DataStruct.add(JsonItem);                 
                      }    // end page loop     

到一个二维数组中,其中属性名称是键,值是值(如果有意义的话)。然后我访问任何给定的东西

Itemname = DataStruct.get(Record_Number).get("Json Key here");

我有一个单独的例程来计算记录号,但这只是一个与 Json 条目开头的给定值进行模式匹配的循环。

关于java - 将 JSON 数组读入 Java 数组/列表/映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28232866/

相关文章:

php - 如何在 PHP 中从 Google Maps Direction API 解码折线

java - 我可以使用 Spring Framework 分离 JDBC 读取和写入吗?

javascript - 从 JavaScript 中的数组中删除特定字符串

c++ - 为什么在 C++ 中字节数组中的字节是颠倒的

arrays - 在 Swift 中从数组数组中删除较小的值集

ajax - django、slickgrid 和 json 加载

java - Camel Rest DSL 响应编码

java - 可序列化对象到Hashmap的Arraylist

java - 如何允许根上下文中的 servlet 过滤器在其他上下文中工作?

java - 匈牙利算法死胡同