我一直很难从编码的JSONObject中获取一些值以便对其进行解码。
server.json数据文件:
{
"servers": [
{
"name": "Server 1",
"domain": "157.230.228.67",
"port": 465,
"location": "ph",
"http_server": "157.230.228.67",
"http_port": 8000
},
{
"name": "Server 2",
"domain": "157.230.228.67",
"port": 465,
"location": "ph",
"http_server": "10.199.212.2",
"http_port": 8080
}
],
"payloads": [
{
"name": "Payload 1",
"host": "IWdvb2dsZS5jb20="
},
{
"name": "Payload 2",
"host": "IWdvb2dsZS5jb20="
},
{
"name": "Payload 3",
"host": "IWdvb2dsZS5jb20="
}
]
}
现在我只想使用jsonObject或JSONArray调用和解码(主机)值; 我的Mainactivity类的代码段; 这会将server.json加载到主要活动上。
server_file = FileUtility.readFileFromAssets(getAssets(), "servers.json"); // LOAD
Log.e("List", "onCreate: " + server_file);
JSONObject jsonObject = null;
try {
jsonObject = new JSONObject(server_file);
} catch (JSONException e) {
e.printStackTrace();
}
JSONArray key = jsonObject.names();
for (int i = 0; i <key.length() ; i++) {
try {
String keys = key.getString(i);
String value = jsonObject.getString(keys);
byte[] decode = Base64.getDecoder().decode(value);
String showDecode = new String(decode, "UTF-8");
} catch (JSONException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
try {
Log.d(TAG, "key: " + jsonObject.names().getString(i) + "value: " + jsonObject.get(jsonObject.names().getString(i)));
} catch (JSONException e) {
e.printStackTrace();
}
现在,我的主要问题是如何调用特定值(主机值),以便在将其用于我的主要活动之前对其进行base64解码。
+编码前主机的值是String数据类型。
答案 0 :(得分:0)
让gson将其转换为对象/数据类(在kotlin中),您可能会受益。您可以通过自定义JsonDeserializer / JsonSerializer在创建base64时反序列化它。
答案 1 :(得分:0)
您可以使用以下命令获取编码的“主机”值:
JSONArray mArray;
try {
mArray = new JSONArray(responseString);
for (int i = 0; i < mArray.length(); i++) {
JSONObject mJsonObject = mArray.getJSONObject(i);
Log.d("Host", mJsonObject.getString("host"));
}
} catch (JSONException e) {
e.printStackTrace();
}
然后您可以对其进行解码。