Я хочу прочитать массив JSON
"connectTo":[
{
"url": "wss://localhost/opt/siml"
}
],
из строки JSON:
{
"cluster":{
"enabled":"true",
"clusterName":"cluster0",
"simlURL":"wss://localhost:5443/opt/siml"
},
"simlFieldWatchUrl":"fieldwatchholder.jsp",
"persistFolder":"clusterconfig/concentratorBPersist",
"sslCrtFile":"clusterconfig/certDirB/siml.crt",
"sslKeyFile":"clusterconfig/certDirB/siml.key",
"SIMLID":"TestServerB",
"localWebProxyServer":"localhost",
"localWebProxyPort":8080,
"SIMLProxyPort":8400,
"SIMLWebPort":8300,
"turnOnExtraSIMLWebSocket":"false",
"autoPromoteNewConnectionsFromPurgatory":true,
"connectTo":[
{
"url": "wss://localhost/opt/siml"
}
],
"tempLogins":[
{
"username":"root",
"password":"root"
}
]
}
Мой код для чтения URL-адреса:
JSONArray connectTo = (JSONArray) config.get("connectTo");
System.out.println("Connect to : " + connectTo);
for (Object o : connectTo) {
JSONObject connect = (JSONObject) o;
String url = (String) connect.get("url");
System.out.println(url);
}
Но System.out.println («Подключиться к:» + connectTo); это возвращается Подключиться к : []
Я прочитал какой-то старый вопрос, но не получил удовлетворительного ответа. Пожалуйста помоги. И заранее спасибо :)
Эта строка - всего лишь часть json, которую я хочу прочитать. Весь json - это большой файл.
Разместите Json в правильном формате, и мы поможем вам извлечь контент.
Хм, вы пробовали конвертировать в JSONObject вместо JSONArray?
Да, пробовал вроде JSONObject connectTo = (JSONObject) config.get ("connectTo"); но бросает исключение литья.




Я просто предполагаю, что config - это JSONObject.
JSONArray connectTo = config.getJSONArray("connectTo");
config.get() возвращает объект, а config.getJSONArray() возвращает JSONArray.
но то же самое, что я сказал выше для config.getJSONArray, он показывает, что метод getJSONArray не может разрешить
Каков результат System.out.println (config.toString ());?
{"cluster": {"simlURL": "wss: \ / \ / localhost: 8200 \ / opt \ / siml", "c lustreName": "cluster 0", "enabled": "true"} , "tempLogins": [{"pas sword": "root", "usern ame": "root"}], "autoP romoteNewConnections FromPurgatory": true, "turnOnExtraSIMLWebS ocket": "false" , «SIML WebPort»: 8200, «persi stFolder»: «clusterco nfig \ / концентраторAP ersist», «localWebPro xyServer»: «localhost», «SIMLProxyPort»: 81 00, «_ sslDirectory»: " clusterconfig \ / certD "," connectTo ": []," ss lCrtFile ":" clusterco nfig \ / certDirA \ / siml .crt "," localWebProxy Port ": 8080," sslKeyFi le " : "clusterconfig \ / certDirA \ /siml.key", "simlFieldWatchUrl": "fieldwatchholder.js p"}
Мне жаль, что это грязно, но это строка Json
Похоже, ваш "connectTo" на самом деле пуст. Так что с кодом все в порядке. И этот JSON полностью отличается от того, о котором идет речь.
О да, я этого не заметил. Но я не уверен, почему он не читает это. Я не понимаю, что там читается "tempLogins": [{"пароль": "root", "username": "root"}], который совпадает с connectTo. Есть ли у вас какие-либо идеи.?
У вас есть JSON, хранящийся в файле, и вы читаете его оттуда? Или как получить этот JSON?
JSONObject config = (JSONObject) новый JSONParser (). Parse (новый FileReader (файл)); файловая переменная - это путь к файлу json.
О, я вижу. Вы используете библиотеки org.json.simple, а не org.json. Вот почему .getJSONArray не работает.
Попробуй это:
JSONArray connectTo =config.getJSONArray("connectTo");
System.out.println("Connect to : " + connectTo);
for (int i=0;i<connectTo.length();i++)
{
JSONObject connect = connectTo.getJSONObject(i);
String url = connect.get("url");
System.out.println(url);
}
для config.getJSONArray он показывает, что метод getJSONArray не может разрешить.
Где вы определили свою переменную конфигурации?
JSONObject config = (JSONObject) новый JSONParser (). Parse (новый FileReader (файл)); а файл - это путь к файлу json.
@ p05p JSONObject config = новый JSONObject (новый JSONParser (). parse (новый FileReader (файл));
все равно не повезло :(
Я заставил его работать вот так, не уверен, помогает ли это:
var json = {
"connectTo": [{
"url": "wss://localhost/opt/siml"
}]
};
for (var o = 0; o < json.connectTo.length; o++) {
console.info(json.connectTo[o].url);
}
Прошу прощения, но для этого мне нужно изменить мою строку json. ?
Эта строка - весь ваш json? Допустимый json должен начинаться с {или [.