0

Hey Guys 私は Google Currency API を使用して通貨換算情報をリクエストしています。たとえば、私はGoogle Currency Apiを使用します

1USD を現地通貨に変換します。返される文字列は {lhs: "1 US Dollar",rhs: "2 481.38958 Ugandan shillings",error: "",icc: true} です。2481.38958 float データ型を抽出して float 変数に保存するには、Java コードが必要です。助けてください。どうもありがとう。

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

値を考慮すると、常に と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

この文字列は 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

応答に常に同じパターン (ウガンダ シリングのテキスト) が含まれている場合、考えられる方法の 1 つは次のようなものです。

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 に答える