Java 改变我获取JSONObject的方式

Java 改变我获取JSONObject的方式,java,android,json,Java,Android,Json,我想知道是否可以改变获取JSON对象的方式 现在我用的是 JSONObject d = jsonarray.getJSONObject(Integer.parseInt(xyz)-1); String id = d.getString(TAG_ID); uid.setText(id); 我现在从数据库解析jsonobject的方式如下:用户输入一个id,我的jsonparser查找这个id,除了我希望id是字符串而不是整数。因为它搜索的值包含不规则和特殊的符号。它需要能够解析的数字是代码39

我想知道是否可以改变获取JSON对象的方式

现在我用的是

JSONObject d = jsonarray.getJSONObject(Integer.parseInt(xyz)-1);
String id = d.getString(TAG_ID); 
uid.setText(id);
我现在从数据库解析jsonobject的方式如下:用户输入一个id,我的jsonparser查找这个id,除了我希望id是字符串而不是整数。因为它搜索的值包含不规则和特殊的符号。它需要能够解析的数字是代码39符号/格式。它将与条形码扫描结合使用

由于getjsonobject是用int表示的,我想知道你们是否知道我如何更改getjsonobject的类型。。或者另一种方式。。由于它现在的解析方式,我只能使用正则数

编辑代码


必须使用int的原因是您使用的是JSONArray。根据定义,它使用基于零的增量int作为索引。要获取具有特定属性(如id)的项,必须首先解析整个数组,然后遍历这些值,直到找到具有所需id属性的对象

不使用数组,您可以使每个项成为普通的JSONObject,如下所示:

{
    "items": {
        "-1": {},
        "+1": {},
        "00": {}
    }
}
这样,每个项都是items对象的属性,可以使用其字符串id进行访问:

JSONObject items = json.getJSONObject("items");
JSONObject myItem = items.getJSONObject(xyz);

您是否尝试过使用gson?您的jsonarray来自何处,它与您的数据库有何关系?那么您的意思是,当我尝试将json解析为对象而不是数组时,我将能够在json解析示例中包含特定字符?比如说,所有这些0-9,A-Z,-dash,.dot,$dollar符号,/正斜杠,+加号,%符号和空格?你能帮我澄清一下吗?我正在使用parseInt或parseLong函数,但是由于整数不能使用我试图得到的奇怪字体,我的解析的字符串版本会是什么样子?因为没有parseString方法?我的建议是将JSON数据的结构从数组更改为普通对象。您不需要解析字符串标识符,因为在本例中,每个项的索引都已经是字符串。嘿,我将json数组更改为jsonobject,除了我使用parseInt函数请求json my之外,你知道我可以用什么让它检查任何值并返回吗?用你当前的JSON/代码更新你的问题,我会看一看。我不确定我是否理解你的最后一个问题。它到底需要做什么?此外,您的JSON结构示例也会有所帮助。
JSONObject items = json.getJSONObject("items");
JSONObject myItem = items.getJSONObject(xyz);