0

大家好,我正在使用 Google Currency Api 请求货币转换信息。例如我使用Google Currency Api

将 1 美元兑换成我的当地货币。返回的字符串是 {lhs: "1 US Dollar",rhs: "2 481.38958 Ugandan shillings",error: "",icc: true} 我需要 java 代码来提取 2481.38958 浮点数据类型并将其保存在浮点变量中。请帮忙。非常感谢。

4

4 回答 4

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]);
于 2012-07-26T17:34:54.963 回答
0

此字符串为 JSON 格式。有一些库可以将其作为对象进行操作。示例:GSON ( http://code.google.com/p/google-gson/ ) 或http://www.json.org/java/

类似于:new JSONObject("{lhs:"1 美元",rhs:"2 481.38958 乌干达先令",error:"",icc:true}").get("rhs")

在你必须压制单位之后,也许使用正则表达式。最后... Float.parseFloat("2 481.38958")

于 2012-07-26T17:33:54.077 回答
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);
于 2012-07-26T17:35:55.167 回答
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());
    }

}
于 2012-07-26T17:50:47.347 回答