3

私は問題があります。私は安らかなAPIを書いています。グループへのアイテムの追加/グループからのアイテムの削除が可能です。そのためには、POST リクエストを特定の URL に送信する必要があります。リクエストを以下に示します。これはすでに機能しています。しかし、私には絶望的な要件があります。JSON リクエストで整数または整数のリストを送信できる必要があります。ただし、パラメーター名は同じである必要があります。

{
"add": "10",
"remove": "100"
}

しかし、この要求は可能なはずです。

{
"add": [
 10,
 11,
 12,
 13
],
"remove": "100"
}

以下のようなさまざまなセッターで問題を解決しようとしました。

public class GroupDiff {
// TODO
private List<Integer> add = new ArrayList<Integer>();
private List<Integer> remove = new ArrayList<Integer>();

public List<Integer> getAdd() {
    return add;
}
public void setAdd(List<Integer> add) {
    this.add = add;
}
public void setAdd(int add) {
     List<Integer> list = new ArrayList<Integer>();
     list.add(add);
    this.add = list;
}
public List<Integer> getRemove() {
    return remove;
}
public void setRemove(List<Integer> remove) {
    this.remove = remove;
}

public void setRemove(int remove) {
     List<Integer> list = new ArrayList<Integer>();
     list.add(remove);
    this.remove = list;
}

しかし、私は常に次の例外を受け取ります:

原因: java.lang.IllegalArgumentException: プロパティ "add" の setter 定義が競合しています: net.erouting.type.GroupDiff#setAdd(1 params) vs net.erouting.type.GroupDiff#setAdd(1 params)

私の質問は、サーバーにJSONリクエストを発行することで、整数と整数のリストの両方が可能であるという問題をどのように解決できるかです。

Spring と Hibernate を使用しています。

あなたが私を助けてくれることを願っています。

4

1 に答える 1

0

私はJSONが苦手ですが、これを試すことができます:

import java.util.ArrayList;
import java.util.List;

public class GroupDiff {
    private List<Integer> addList = new ArrayList<Integer>();
    private List<Integer> removeList = new ArrayList<Integer>();

    public List<Integer> getAddList() {
        return addList;
    }

    public List<Integer> getRemoveList() {
        return removeList;
    }

    public void setAddList(int... toAdd) {
        for (int i = 0; i < toAdd.length; i++) {
            this.addList.add(toAdd[i]);
        }
    }

    public void setRemoveList(int... toRemove) {
        for (int i = 0; i < toRemove.length; i++) {
            this.removeList.add(toRemove[i]);
        }
    }

    public static void main(String[] args) {
        GroupDiff groupDiff;

        /*
         * All of this calls will work good.
         */
        groupDiff = new GroupDiff();
        groupDiff.setAddList(10);
        groupDiff.setRemoveList(100);
        System.out.printf("addList=%s; removeList=%s\n", 
                groupDiff.addList, groupDiff.removeList);

        groupDiff = new GroupDiff();
        groupDiff.setAddList(10, 11, 12, 13);
        groupDiff.setRemoveList(100);
        System.out.printf("addList=%s; removeList=%s\n", 
                groupDiff.addList, groupDiff.removeList);

        groupDiff = new GroupDiff();
        groupDiff.setAddList(new int[]{10, 11, 12, 13});
        groupDiff.setRemoveList(100);
        System.out.printf("addList=%s; removeList=%s\n", 
                groupDiff.addList, groupDiff.removeList);
    }
}

出力は次のとおりです。

addList=[10]; removeList=[100]
addList=[10, 11, 12, 13]; removeList=[100]
addList=[10, 11, 12, 13]; removeList=[100]
于 2013-01-23T23:44:47.063 に答える