はに可能な解決策でありますあなたの問題。私はシナリオのいくつかを処理しようとしましたが、これはトリックを行う必要があります。
package com.controller;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;
public class JSONColumnNameExtract {
static List<String> colNames;
public static void main(String[] args) {
colNames = new ArrayList<String>();
String jsonString = "";
try {
jsonString = readFile("C:\\jsonInput.json",
StandardCharsets.UTF_8);
} catch (IOException e) {
e.printStackTrace();
}
JSONObject mainJObject = new JSONObject(jsonString);
Iterator<?> keys = mainJObject.keys();
while (keys.hasNext()) {
String key = (String) keys.next();
if (mainJObject.get(key) instanceof JSONArray) {
JSONArray array = (JSONArray) mainJObject.get(key);
for (int i = 0; i < array.length(); i++) {
iterateJSON(array.get(i), key);
}
continue;
}
if (mainJObject.get(key) instanceof JSONObject) {
iterateJSON(mainJObject.get(key), key);
} else {
if (!colNames.contains(key))
colNames.add(key);
}
}
for (String colName : colNames)
System.out.println(colName);
}
private static void iterateJSON(Object object, String key2) {
JSONObject jsonObject = ((JSONObject) object);
Iterator<?> keys = jsonObject.keys();
String key;
while (keys.hasNext()) {
key = (String) keys.next();
if (jsonObject.get(key) instanceof JSONArray) {
JSONArray array = (JSONArray) jsonObject.get(key);
for (int i = 0; i < array.length(); i++) {
iterateJSON(array.get(i), key);
}
continue;
}
if (jsonObject.get(key) instanceof JSONObject) {
iterateJSON(jsonObject.get(key), key2 + "." + key);
} else {
if (!colNames.contains(key2 + "." + key))
colNames.add(key2 + "." + key);
continue;
}
}
}
static String readFile(String path, Charset encoding) throws IOException {
byte[] encoded = Files.readAllBytes(Paths.get(path));
return new String(encoded, encoding);
}
}
サンプル入力JSON私が取った:
{
"id":"1",
"name":{
"first_name":"Joe",
"last_name":"Thomas"
},
"address":[
{
"first_line":"Joe",
"city":{
"city_name":"Bangalore",
"city_pin":650659
}
},
{
"first_line":"Joe",
"city":{
"city_name":"Bangalore",
"city_pin":650659,
"city_pin2":65065933
}
}
]
}
出力:あなたは `json`ファイルであるかについてのより多くの情報を提供し、より手の込んだことができれば
address.first_line
address.city.city_name
address.city.city_pin
address.city.city_pin2
name.last_name
name.first_name
id
は素晴らしいことだろうあなたは期待される出力を得ます。適切な入力がなければ、コミュニティーは入力と出力を予測することはほとんど不可能です。 –
サミュエルさんに感謝してくれてありがとうございます。 jsonファイルの内容は次のとおりです。{"id": "1"、 "name":{"first_name": "Joe"、 "last_name": "Thomas"}} .first_nameとname.last_name – PShah
また、これまでに何を試してみましたか、何が必要なものを得るのを妨げていますか?私たちはあなたのためにそれを修正することができますので、あなたのコードを投稿して私たちと共有することができれば感謝します –