2

在使用变量时无法从 JSON 对象获取名称/值对,但在对名称进行硬编码时能够读取它。

为了更好地解释:

1) 我的 JSON 对象是这样的 - {..... { "rates":{ "name1": value1, "name2": value2 ...etc } ...}

2)我能够在我的 android 应用程序中读取这个对象。

3)现在这个速率对象名称值对,我试图根据用户输入读取 -

          String s1 = '"'+name1+'"';  // here name1 i got from user input, & converted into string

4)现在当我试图从费率对象中获取值时,我得到空异常 -

            JSONObject rateObject = jObject.getJSONObject("rates");  //able to get  
                                                                    complete object

            String rate1 = (String) rateObject.get(s1); // giving NULL exception

5)但如果我使用硬编码字符串,它可以工作 -

            String rate1 = (String) rateObject.get("name1"); // working

任何指针为什么它在使用变量时不起作用。

谢谢


感谢您的建议,我解决了问题。我犯了两个错误 - 1)使用其他人正确指出的引号和 2)将双精度值转换为字符串。纠正两者都解决了我的问题:)

4

2 回答 2

1

就您的最终代码片段而言,您实际上是在做

String rate1 = (String) rateObject.get("\"name1\""); //note the extra quotes

因为您已经用双引号字符预订了用户输入字符串。您只希望输入字符串本身没有书尾。JSON 符号中的引号用于描述每个键名;引号不是键名本身的一部分。

创建时需要省略引号s1

String s1 = name1;

或者,如果name1不是 String 已经:

String s1 = name1.toString();
于 2012-11-09T00:14:11.493 回答
0

代替:

String s1 = '"'+name1+'"';

和:

String s1 = name1;
于 2012-11-09T00:16:06.410 回答