0

我使用 VFP 8.0 已经有一段时间了,我最喜欢它的一件事就是宏功能;

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 方面,您可能正在考虑使用反射API。

于 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, 利马-秘鲁

于 2015-04-18T13:12:40.813 回答