【问题标题】:iterate through an a json value containing an array to pick an image string遍历包含数组的 json 值以选择图像字符串
【发布时间】:2018-04-27 15:44:48
【问题描述】:

我能够从数据库中获取值并将其传递给一个字符串数组,如图所示

String[] strArrayCol = new String[6];
strArrayCol[4] = json_data.getString("images");

如果你打印上面的内容,你会得到:

[{"path":"http:\/\/10.0.2.2:88\/\/web\/uploads\/images\/yi6ej6f524bepyujh49y.png"},{"path":"http:\/\/10.0.2.2:88\/\/web\/uploads\/images\/wendzj5atiks45c3zw00.png"},{"path":"http:\/\/10.0.2.2:88\/\/web\/uploads\/images\/rg04t5vcp4yxwdew677n.png"},{"path":"http:\/\/10.0.2.2:88\/\/web\/uploads\/images\/3yvy9f970vit2pxascv7.png"}]

我的尝试是执行类似的操作

ArrayList<String[]> imgCol...
imgCol.add(strArrayCol );

 for (String [] val : imgCol){
                                System.out.println( val[4]);
                            }

让它打印

http:\/\/10.0.2.2:88\/\/web\/uploads\/images\/yi6ej6f524bepyujh49y.png
http:\/\/10.0.2.2:88\/\/web\/uploads\/images\/wendzj5atiks45c3zw00.png
http:\/\/10.0.2.2:88\/\/web\/uploads\/images\/rg04t5vcp4yxwdew677n.png
http:\/\/10.0.2.2:88\/\/web\/uploads\/images\/3yvy9f970vit2pxascv7.png

请问我如何才能做到这一点

【问题讨论】:

  • 您的“代码”看起来不错,您遇到的错误是什么?
  • 没有错误,目前打印出来>>>> [{"path":"http:\/\/10.0.2.2:88\/\/web\/uploads\/images \/yi6ej6f524bepyujh49y.png"},{"路径":"http:\/\/10.0.2.2:88\/\/web\/uploads\/images\/wendzj5atiks45c3zw00.png"},{"路径":" http:\/\/10.0.2.2:88\/\/web\/uploads\/images\/rg04t5vcp4yxwdew677n.png"},{"路径":"http:\/\/10.0.2.2:88\/\ /web\/uploads\/images\/3yvy9f970vit2pxascv7.png"}] 但我需要它来打印这个 >>> http:\/\/10.0.2.2:88\/\/web\/uploads\/images\/ yi6ej6f524bepyujh49y.png http:\/\/10.0.2.2:88\/\/web\/uploads\/images\/wendzj5atiks45c3zw00.png ....................跨度>
  • 目标是从该字符串变量中解码图像
  • 拆分每个字符串 string.split(""path":");

标签: java arrays string


【解决方案1】:

根据您的代码和解释,您似乎是 JSON 对象“图像”是以下字符串:

{images:[{"path":"http:\/\/10.0.2.2:88\/\/web\/uploads\/images\/yi6ej6f524bepyujh49y.png"},{"path":"http:\/\/10.0.2.2:88\/\/web\/uploads\/images\/wendzj5atiks45c3zw00.png"},{"path":"http:\/\/10.0.2.2:88\/\/web\/uploads\/images\/rg04t5vcp4yxwdew677n.png"},{"path":"http:\/\/10.0.2.2:88\/\/web\/uploads\/images\/3yvy9f970vit2pxascv7.png"}])}

这是一个JSONArray的图像值..,你的代码应该是这样来检索路径的值

我删除了字符串中多余的反斜杠。

JsonImplement.parseJson("{\"images\":[{\"path\":\"http://10.0.2.2:88//web/uploads/images/yi6ej6f524bepyujh49y.png\"},{\"path\":\"http://10.0.2.2:88//web/uploads/images/wendzj5atiks45c3zw00.png\"},{\"path\":\"http://10.0.2.2:88//web/uploads/images/rg04t5vcp4yxwdew677n.png\"},{\"path\":\"http://10.0.2.2:88//web/uploads/images/3yvy9f970vit2pxascv7.png\"}]}");

这是我用另一种方法写的逻辑……

JSONParser parser = new JSONParser();
JSONObject jsonObject = (JSONObject) parser.parse(jsonString);
JSONArray arr = (JSONArray) jsonObject.get("images");
for(int i=0;i<arr.size();i++)
{
    JSONObject obj2 = (JSONObject) arr.get(i);
    System.out.println(obj2.get("path"));
}

这将为您提供图像路径的输出

http://10.0.2.2:88//web/uploads/images/yi6ej6f524bepyujh49y.png
http://10.0.2.2:88//web/uploads/images/wendzj5atiks45c3zw00.png
http://10.0.2.2:88//web/uploads/images/rg04t5vcp4yxwdew677n.png
http://10.0.2.2:88//web/uploads/images/3yvy9f970vit2pxascv7.png

【讨论】:

    【解决方案2】:

    如果您知道您的图像文件名将始终采用如下格式:

    {path}/{filename}
    

    然后有一个简单的技术来查找文件名。

    1. 查找字符串中的最后一个斜杠 (/) 字符。
    2. 文件名是最后一个斜线字符之后的所有内容。

    例如:

    http:\/\/10.0.2.2:88\/\/web\/uploads\/images\/yi6ej6f524bepyujh49y.png
    

    具有“http://10.0.2.2:88//web/uploads/images/”的“路径”值 和“yi6ej6f524bepyujh49y.png”的“文件名”值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-21
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多