Java:从多数组中提取索引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

因此,我遇到了一个奇怪的问题:我正在使用Woocommerce Rest API,我需要从“images”-数组中获取src

我已经尝试将images数组保存到另一个数组中,但是我不知道如何从该数组中获取“src”:

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"));
    }
}