3

タイプのjs配列を作成したい

Name(
{title : "Mr.",firstname : "Bill",lastname : "Gates"},
{title : "Mr.",firstname : "Bill",lastname : "Gates"},
{title : "Mr.",firstname : "Bill",lastname : "Gates"}
)

したがって、基本的に関連する配列を作成したいと思います。すべての例は、javascript 配列を Java に変換するようなものですが、私の場合はその逆が必要です。この配列をJavaから埋めます。

JSArrayこれをJsMixedArray行っているようですが、それらに追加する方法を理解できました。

4

3 に答える 3

4

1つのアプローチは、JSNIメソッドを使用して、次のように配列/マップのアイテム/エントリを作成することです。

 JsArray arr = JavaScriptObject.createArray().cast();
 arr.push(newEntry("Mr.", "Bill", "Gates"));      

 ....

 private final native JavaScriptObject newEntry(String title, 
                               String firstname, String lastname)/*-{
     return {title: title, firstname: firstname, lastname: lastname};
 }-*/; 

JSONユーティリティメソッドを使用して、念頭に置いているデータ構造を作成することもできます。JSONObjectsをJSONArrayに配置します。

于 2012-11-01T05:24:14.117 に答える
0

Java から空を作成することはできますJavaScriptObjectが、そこからデータを入力することはできないため、フォースのダークサイドを使用してください。

private native JavaScriptObject putString(JavaScriptObject jso, String key, String value)/*-{
    jso[key] = value;
    return jso;
}-*/;

private native JavaScriptObject putObject(JavaScriptObject jso, String key, JavaScriptObject value)/*-{
    jso[key] = value;
    return jso;
}-*/;

void someJavaFunction() {
    JavaScriptObject fromJava = JavaScriptObject.createObject();
    fromJava = putString(fromJava, "foo", "bar");
    fromJava = putObject(fromJava, "baz", fromJava);
}
于 2015-03-11T10:35:39.060 に答える
0

変数$wnd.vにはオブジェクトの配列が含まれます。注: Java オブジェクトを JSON に変換する方法を見つける必要があります (私はrestygwtを使用しました)。

class PersonList {
    List<Person> list;
}

class Person {
    String title;
    String firstName;
    String lastName;

    public Person () {}

    public Person(String title, String firstName, String lastName) {
        this.title = title;
        this.firstName = firstName;
        this.lastName = lastName;
    }
}


public class Main implements EntryPoint {

    public interface PersonCodec extends JsonEncoderDecoder<PersonList> {
    }

    PersonCodec personCodec = GWT.create(PersonCodec.class);

    public void onModuleLoad() {
        List<Person> list = new ArrayList<Person>();

        list.add(new Person("Mr.", "Bill", "Gates"));
        list.add(new Person("Mr.", "Andrey", "Mormysh"));

        PersonList personList = new PersonList();
        personList.list = list;

        String json = personCodec.encode(personList).toString();

        setPersonList(json);
    }


    public static native void setPersonList(String personListJson)/*-{
        $wnd.v = eval("(" + personListJson + ")").list;
        alert($wnd.v[0].firstName); // Output: 'Bill'
    }-*/;
}
于 2012-11-01T08:26:05.800 に答える