0

私はかなり長い間 VFP 8.0 を使用してきましたが、最も気に入った機能の 1 つはマクロ機能です。

name = "Paul James"
age = 25
result = My name is &name, I am &age years old.

私もできる、

dimension x[5];
x[0] = "box"
x[1] = "area"
text.&x[0]..text = "textbox" ---> textbox.text="textbox"
text.&x[1]..text = "textarea" ---> textarea.text="textarea"

それはFoxProのことで、私はそれに愛着を持っているようで、Javaのようなオブジェクト指向言語でそのようなものが存在することを望んでいるようです(または、本当にそうです、私はいくつかの追加の研究を欠いているだけですか?)とにかく、私はそのようなものが欲しかったこれが私の問題です。

私は JSON 配列を持っています。これは、応答のすべての名前を取得し、Android コード ファクトリで提供される「names()」メソッドを使用して一時配列に格納します。

意図的に、メソッドから作成された一時配列内の各名前の配列を作成したいと考えています。

説明する;

JSONArray response = 
[{"name":"a","middlename":"aa","surname":"aaa"},{"name":"b","middlename":"bb","surname":"bbb"},{"name":"c","middlename":"cc","surname":"ccc"}]

temp[] = [{name,middlename,surname}];

望ましい出力:

String[] name = new String[response.firstobject.length];
String[] middlename = new String[response.firstobject.length];
String[] surname =  new String[response.firstobject.length];

これが私の実際のコードです。JSON パーサー

    @SuppressWarnings("null")
public ArrayList<String> parseJson(JSONArray ja) throws JSONException{
    ArrayList<String> listItems = new ArrayList<String>();
    String[] temp = null;       
    //Get all the fields first
    for (int i=0; i<=0; ++i){
        JSONObject jo = ja.getJSONObject(i);
        if(jo.length()>0){
            temp = new String[jo.names().length()];
            for(int x=0; x<jo.names().length(); ++x){
                temp[x] = jo.names().getString(x);
            }
        }
    }
     }

だから私はちょっと望ましい出力に行き詰まっています.これはそもそも可能ですか? 私がこれを行っている理由は、一般的な JSON 応答メソッドを作成したかったからです。使用するためだけに応答のすべての名前を覚えておく必要がないように。Java/Android ソリューションを探しています (Android で動作する可能性が最も高いソリューション)。

前もって感謝します!

4

2 に答える 2

2

Visual FoxProでできることを複製しようとは限りません。絶対に使用する必要がない限り、マクロ置換を回避することは通常その言語での良い考えであり、代わりに名前式を使用することはできません。

名前式の例を次に示します。

STORE 'city' TO cVarCity
REPLACE (cVarCity) WITH 'Paris'

これは、特にループではるかに高速です。

Java側では、おそらくReflectionAPIの使用を検討しています。

于 2012-05-09T09:13:19.143 に答える
0

私は vfp も使用しており、いくつかのルーチンがあります。おそらく、これらの関数はSTRTRAN、CHRTRANに役立ちます:

//--------- ejemplos :
// STRTRAN("Hola * mundo","*", "//") ==> "Hola // mundo"
public String STRTRAN(String cExpression, String cFindString, String cReplacement){        
    return cExpression.replace(cFindString, cReplacement);
}

//------------------ ejemplos:
// miToolkit.CHRTRAN("ABCDEF", "ACE", "XYZ"); // muestra XBYDZF. ok
// miToolkit.CHRTRAN("ABCDEF", "ACE", "XYZQRST");  // muestra XBYDZF. ok
// miToolkit.CHRTRAN("ABCD", "ABC", "YZ"); // muestra YZCD.  No es como fox
public String CHRTRAN(String cString, String cFindChars, String cNewChars){
    String cResult = cString;       
    char[] aFindChars; 
    char[] aNewChars;  
    int nLength = cFindChars.length();

    aFindChars = cFindChars.toCharArray();
    aNewChars  = cNewChars.toCharArray();
    if(cNewChars.length() < nLength){
        nLength = cNewChars.length() ;
    }
    for(int i=0; i < nLength; i++){
        cResult = cResult.replace( aFindChars[i], aNewChars[i] );
    }
    return cResult;
}

Saludos、César Gómez、Lima-Perú

于 2015-04-18T13:12:40.813 に答える