此:
txtTaxRate.setText(GetURLContent.getData(sURL));
输出以下内容:
{"taxrate":0.15,"year":2017,"developer":"","salary":10000.0,"status":"S"}
我如何仅输出税率(0.15)?这是JSON到字符串或键值对。我的教授说,这可以通过从输出中“一行”“获取”某些东西来完成,他说我已经接近了,但我真的不知道从这里去哪里。
答案 0 :(得分:0)
您可以使用2种方法:inStr()
和substring()
。
您可以在这里找到它们:String class
使用此代码:
String str = "{\"taxrate\":0.15,\"year\":2017,\"developer\":\"\",\"salary\":10000.0,\"status\":\"S\"}";
String taxrate = str
.substring(0, str.indexOf(","))
.substring(str.indexOf(":") + 1);
System.out.println(taxrate);
将打印:
0.15
首先,获得直到","
第一次出现的字符串。
然后在该子字符串中,得到":"
之后的部分。
答案 1 :(得分:0)
如果您确定您的字符串将始终具有您所显示的格式,那么此行即可解决问题:
txtTaxRate.setText(GetURLContent.getData(sURL).substring(11, 15));
如果您不想使用幻数,可以使用indexOf and
substring`的组合来实现,例如:
String data = GetURLContent.getData(sURL);
int fromIndex = data.indexOf("\"taxrate\":") + "\"taxrate\":".length();
int toIndex = data.indexOf(",\"year\"");
txtTaxRate.setText(data.substring(fromIndex, toIndex));
显然,这不是很漂亮。您可以使用JSON parser获得更通用的解决方案。
答案 2 :(得分:0)
GetURLContent.getData(sURL)
返回一个txtTaxRate.setText()
正在使用的字符串。现在,由于您正在获取字符串,因此您可以先将其转换为JSON
,另一种简单的方法如下所示:
String s = GetURLContent.getData(sURL);
String[] arr = s.substring(1,s.length()-1).split(",");
String requiredText = Arrays.stream(arr).filter(s2 -> s2.contains("taxrate")).findFirst().get();
现在,当您执行System.out.println(requiredText );
时,将看到输出"taxrate":0.15
。
另外请注意,您需要java 8
才能使用上述解决方案。