Hey Guys我使用Google Currency Api来请求货币转换信息。 例如,我使用 Google Currency Api
将1USD转换为我的本地货币。 返回的字符串是{lhs:“1美元”,rhs:“2 481.38958 Ugandan shillings”,错误:“”,icc:true} 我需要java代码来提取2481.38958浮点数据类型并将其保存在float变量中。 请帮忙。 非常感谢。
答案 0 :(得分:3)
输入JSON字符串:
{lhs: "1 U.S. dollar",rhs: "2481.38958 Ugandan shillings",error: "",icc: true}
使用http://json-lib.sourceforge.net/:
JSONObject json = (JSONObject) JSONSerializer.toJSON( jsonTxt );
String dollarString = json.getFloat( "rhs" );
float dollars = Float.parseFloat(dollarString.split(" ")[0]);
答案 1 :(得分:0)
此字符串为JSON格式。有一些库可以将其作为对象进行操作。 示例:GSON(http://code.google.com/p/google-gson/)或http://www.json.org/java/
像: 新的JSONObject(“{lhs:”1美元“,rhs:”2 481.38958 Ugandan shillings“,错误:”“,icc:true}”)。get(“rhs”)
在你必须压制单位之后,可能还有正则表达式。 最后...... Float.parseFloat(“2 481.38958”)
答案 2 :(得分:0)
考虑到值始终在rhs:
和单词之间。
String str = "{lhs: \"1 U.S. dollar\",rhs: \"2 481.38958 Ugandan shillings\",error: \"\",icc: true}";
Matcher m = Pattern.compile("rhs:\\s.*?([\\d\\s\\.]+)\\s\\w+").matcher(str);
m.find();
float value = Float.parseFloat(m.group(1).replaceAll("[^\\d\\.]", ""));
System.out.println(value);
答案 3 :(得分:0)
如果响应总是包含相同的模式(乌干达先令文本),一种可能的方法是这样的:
package so;
import java.util.StringTokenizer;
public class DemoString {
public static void main(String[] args) {
String s = new String("{lhs: \"1 U.S. dollar\",rhs: \"2 481.38958 Ugandan shillings\",error: \"\",icc: true}") ;
StringTokenizer st = new StringTokenizer(s, "\"");
st.nextToken(); //{lhs:
st.nextToken(); //1 U.S. dollar
st.nextToken(); //,rhs:
String value = st.nextToken(); //2 481.38958 Ugandan shillings
String num = value.substring(0, value.indexOf("U")); // 2 481.38958
num = num.replaceAll(" ", "");
Float fnum = 0f;
try {
fnum = Float.parseFloat(num);
} catch (Exception e) {
e.printStackTrace(System.out);
}
System.out.println("The float number is: " + fnum.toString());
}
}