在JSON中,我需要访问包含另一个JSON的密钥,如何访问它?
例如,我想访问"6a082df27f9fe4be184d7222b79c2f8a"
id" 1401 Pecas Midia Grafica_v2 / Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner _-"
LinkedHashMap 是不可能的因为它返回1401 Pecas Midia Grafica_v2/Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-={id=9843da8e02604ae0c048b2cfb6009c7d, path=p-554b9ef1e4b0c4105adacb2b/conteudo/08039a5f3ea1924ed7950bc0caf434a2.swf, nome=Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-.swf, pathOriginal=1401 Pecas Midia Grafica_v2/Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-.swf, imagem=p-554b9ef1e4b0c4105adacb2b/conteudo/d8c6b07bebf7df2c894c6b6ddaa35bbb.gif}
JSON
[
{
"permalink": "c8635076fa371e7642e6e284cc9b60dc",
"pecas": {
"1401 Pecas Midia Grafica_v2/Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-": {
"id": "6a082df27f9fe4be184d7222b79c2f8a",
"path": "p-554ba68ce4b04befa5148ae4/conteudo/08039a5f3ea1924ed7950bc0caf434a2.swf",
"nome": "Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-.swf",
"pathOriginal": "1401 Pecas Midia Grafica_v2/Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-.swf",
"imagem": "p-554ba68ce4b04befa5148ae4/conteudo/d8c6b07bebf7df2c894c6b6ddaa35bbb.gif"
},
...
}
]
我的代码
public BasicDBList addComment(String validacaoId, String permalinkId, String pecaId) {
Validacao getValidacao = validacaoDAO.findById(validacaoId);
BasicDBObject permalink = permalinkDAO.getPermalinks(validacaoId, permalinkId);
LinkedHashMap pecas = (LinkedHashMap) permalink.get("pecas");
if (getValidacao == null || permalink.isEmpty()) {
Log.error(this, "Erro ao adicionar comentário: Id da validação ou permalink inválido.");
throw new NotFoundException("Erro ao adicionar comentário.");
}
Set entrySet = pecas.entrySet();
Iterator it = entrySet.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
throw new NotImplementedException();
}
答案 0 :(得分:0)
假设您的json文件具有此结构
[
{
"permalink": "c8635076fa371e7642e6e284cc9b60dc",
"pecas": {
"1401 Pecas Midia Grafica_v2/Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-": {
"id": "6a082df27f9fe4be184d7222b79c2f8a",
"path": "p-554ba68ce4b04befa5148ae4/conteudo/08039a5f3ea1924ed7950bc0caf434a2.swf",
"nome": "Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-.swf",
"pathOriginal": "1401 Pecas Midia Grafica_v2/Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-.swf",
"imagem": "p-554ba68ce4b04befa5148ae4/conteudo/d8c6b07bebf7df2c894c6b6ddaa35bbb.gif"
}
}
}
]
现在定义三个类:
标识符类:
class Identifier {
String id;
String path;
String nome;
String pathOriginal;
String imagem;
@Override
public String toString() {
return "[ " + id + " , " + path + " , " + nome + " , " + pathOriginal
+ " , " + imagem + " ]";
}
// getters, setters,...
}
Pecas课程:
class Pecas {
@SerializedName("1401 Pecas Midia Grafica_v2/Whirlpool_LinhaBranca_Positivo_CanaisdeAfinidade_SuperBanner_-")
Identifier identifier;
// getters and setters
}
和数据类
class Data {
String permalink;
Pecas pecas;
// getters and setters
}
然后使用Gson API将您的json文件example.json
转换为Data
个对象的列表
Gson gson = new Gson();
List<Data> list = gson.fromJson(new BufferedReader(new FileReader(
"example.json")), new TypeToken<List<Data>>() {
}.getType());
然后访问此ID 6a082df27f9fe4be184d7222b79c2f8a
并输出
String id = list.get(0).getPecas().getIdentifier().getId();
System.out.println("This is the id you want to access "+id);
输出:
This is the id you want to access 6a082df27f9fe4be184d7222b79c2f8a