Java:从多数组中提取索引src
因此,我遇到了一个奇怪的问题:我正在使用Woocommerce Rest API,我需要从“images”-数组中获取src 我已经尝试将images数组保存到另一个数组中,但是我不知道如何从该数组中获取“src”:Java:从多数组中提取索引src,java,codenameone,Java,Codenameone,因此,我遇到了一个奇怪的问题:我正在使用Woocommerce Rest API,我需要从“images”-数组中获取src 我已经尝试将images数组保存到另一个数组中,但是我不知道如何从该数组中获取“src”: try { ConnectionRequest r = new ConnectionRequest(); r.setPost(false); r.setUrl("https://" + tokens.getShop_name_token() + ".ch/w
try {
ConnectionRequest r = new ConnectionRequest();
r.setPost(false);
r.setUrl("https://" + tokens.getShop_name_token() + ".ch/wp-json/wc/v3/products?consumer_key=" + tokens.getConsumer_key_token() + "&consumer_secret=" + tokens.getSecret_key_token());
NetworkManager.getInstance().addToQueueAndWait(r);
Map<String, Object> result = new JSONParser().parseJSON(new InputStreamReader(new ByteArrayInputStream(r.getResponseData()), "UTF-8"));
//JSON Filter
ArrayList<Map<String, String>> myList = (ArrayList<Map<String, String>>) result.get("root");
for (int i = 0; i < myList.size(); i++) {
Map<String, String> dtls = myList.get(i);
productsArr.add(dtls.get("name"));
productStock.add(dtls.get("stock_status"));
productDateCreated.add(dtls.get("date_created"));
//TODO: Filter out image-soure
productImages.add(dtls.get("images"));
}
System.out.println(productImages);
试试看{
ConnectionRequest r=新的ConnectionRequest();
r、 setPost(假);
r、 setUrl(“https://”+tokens.getShop_name_token()+”.ch/wp json/wc/v3/products?consumer_key=“+tokens.getConsumer_key_token()+”&consumer_secret=“+tokens.getSecret_key_token());
NetworkManager.getInstance().addToQueueAndWait(r);
Map result=new-JSONParser().parseJSON(新的InputStreamReader(新的ByteArrayInputStream(r.getResponseData()),“UTF-8”);
//JSON过滤器
ArrayList myList=(ArrayList)result.get(“根”);
对于(int i=0;i
输出:[],[],[],[{id=16.0,创建日期=2018-11-08T15:21:14,
创建日期gmt=2018-11-08T15:21:14,
修改日期=2018-11-08T15:21:14,
修改日期gmt=2018-11-08T15:21:14,
src=,name=Vneck
Tshirt,alt=}],
[{id=15.0,创建日期=2018-11-08T15:21:14,创建日期=2018-11-08T15:21:14,
修改日期=2018-11-08T15:21:14,
修改日期gmt=2018-11-08T15:21:14,
src=,
name=Tshirt,alt=}]]
现在我的问题是:如何过滤掉索引以得到“src”当您使用功能相当简单的JSON解析器时,它将JSON解析为一个
映射
,其他什么都不做,然后您要做的是将您选择值得到的对象
转换为预期类型,并从那里重复
如果顶级JSON对象是一个数组,那么将创建一个特殊的“root”
元素,这就是您在这里得到的内容。这意味着JSON的结构被解析为:
{
"root": [
{
"name": <str>,
"stock_status": <???>,
"date_created": <str>,
"images":
{
"id": <num>,
"date_*": <str>,
"src": <str>,
"name": <str>,
"alt": <str>
}
]
}
]
}
productImages
来自哪里?它的类型是什么?从API接收到的Json是什么样子的?如果Json对象不是单一级别的字符串值,则需要将其解析为Map
。productImages是一个类变量:ArrayList productImages=new ArrayList()使用当前设置,您可以再次解析productImages
中的Json,并获得src
属性。但是,我建议您直接处理初始Json对象,不要将其转换为Map
,而只从Json对象中获取所需字段。您能给出一个关于h的解决方案吗如何直接处理初始JSON?您使用的JSON包是什么?它是org.JSON.simple
?
for (const Map<String, Object> element : (List<Map<String, Object>>) result.get("root")) {
// The "element" object has an "images" value that is a list of objects
for (const Map<String, Object> image : (List<Map<String, Object>>) element.get("images")) {
// Save the "src" field of each image
productImages.add((String) image.get("src"));
}
}