Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从对象检索qrcode数据?_Java - Fatal编程技术网

Java 如何从对象检索qrcode数据?

Java 如何从对象检索qrcode数据?,java,Java,我有一个方法可以以{p':1,“x”:10,“y”:20}这种格式返回QRcode数据,它被捕获在一个名为qrdata的变量中(这是一种字符串数据类型) 我的问题是如何从该键、值对对象检索值?如果。。。。String qrdat=readQR(image)那么如何从qrdat检索数据?您可以执行以下操作: JSONObject jsonObject = new JSONObject(qrData); System.out.println("p: " + jsonObject

我有一个方法可以以
{p':1,“x”:10,“y”:20}
这种格式返回QRcode数据,它被捕获在一个名为
qrdata
的变量中(这是一种
字符串
数据类型)


我的问题是如何从该键、值对对象检索值?
如果。。。。String qrdat=readQR(image)
那么如何从
qrdat
检索数据?

您可以执行以下操作:

JSONObject jsonObject = new JSONObject(qrData);

System.out.println("p: " + jsonObject.getInt("p"));
System.out.println("x: " + jsonObject.getInt("x"));
System.out.println("y: " + jsonObject.getInt("y"));
输出:

p: 1
x: 10
y: 20

您可以使用javax.json中的JSONObject类,如BuildSlayer的回答中所述

在你问题中的例子中,你对“p”使用简单的引号。假设这不是一个拼写错误,并且您的意思是不同的字符可以用作引号,那么使用它可能会遇到麻烦。在这种情况下,您可以使用纯java解析qrData字符串:

public String[] parseJSON(String qrData){
    String[] output = new String[qrData.length()];
    int i = 0;
    for (String keyValuePair:qrData.split(",")) {
        output[i++] = keyValuePair.split(":")[1];
    }
    return output;
}

}

非常感谢您!顺便说一句,你能解释为什么子字符串是4吗?第一个引号在索引0处,键在索引1处,第二个引号在索引2处,冒号在索引3处,所以你的值从索引4开始。我更新了答案,使它能与多字符键一起工作。谢谢你!顺便说一句,我扫描了一个二维码,返回值如下-{“p”:1,“x”:10.23,“y”:11.2,“z”:4.5}这是我工作的编程手册中给出的格式。我不确定数据的类型。所以,基本上我需要从这个物体上得到x,y和z的值,才能知道机器人的坐标。我可以从给定的代码中获取值吗?我的代码将从JSON返回一个值数组(在您的示例中,[1,10.23,11.2,4.5]),所以不要使用返回数组的第一个索引。如果需要返回数字格式,请查看。如果您想直接得到一个没有p的输出,那么从分割中的索引1开始迭代(在for循环中使用for i=1)。