0

私は次のクラスを持っています

public class ReturnData {
    public ReturnData() {
        OperationResult = Result.Failed;
        Messages = "An Error Occured";
        UpdateAvailable = "0";
        ResultData = "";
    }

    public Result OperationResult;
    public String Messages;
    public String UpdateAvailable;
    public Object ResultData;
}

私は次のようなjson文字列を持っています

{"OperationResult":0,"Messages":"","UpdateAvailable":"","ResultData":{"SessionId":"3b44a524-fc2a-499b-a16e-6d96339a6b5b","UserName":"admin","AccoundId":null,"Roles":["Administrator"],"DisplayName":"Admin","Status":3,"Type":1}}

このjson文字列を上記のクラスに割り当てたいです。json文字列をJavaオブジェクトに割り当てるためにGSONを使用しています。通常のクラスでは、json文字列をJavaオブジェクトに割り当てることができます。しかし、このクラスでは直接割り当てることができませんでした。誰か助けてください、今私は次のように割り当てています、

String formatedjsonstring = {json string};
            Log.i("FORMAT STRING:",formatedjsonstring);
            Gson gson = new Gson();
            ReturnData returndata = (ReturnData) gson.fromJson(
                    formatedjsonstring, ReturnData.class);
4

3 に答える 3

1

sourceforgeのJavaJsonを使用できます。json文字列をに渡すことができますJsonObject .parse()

これを試して

 JsonObject json = JsonObject .parse("{\"OperationResult\":0, \"Messages\":\"UpdateAvailable\"");
 System.out.println("OperationResult=" + json.get("OperationResult"));
 System.out.println("Messages=" + json.get("Messages"));

https://sourceforge.net/projects/javajson/

于 2013-03-06T11:32:17.270 に答える
0

JavaクラスはJSONに似ていないので、形や形は...問題が発生します。

  • 問題#1 OperationResultint
  • 問題#2:あなたは...として宣言さResultDataれていObjectますJavaはそのようには機能しません。

JSONと一致するPOJOが必要です。

public class ReturnData {
    public ReturnData() {
        OperationResult = Result.Failed;
        Messages = "An Error Occured";
        UpdateAvailable = "0";
        ResultData = "";
    }

    public int OperationResult;
    public String Messages;
    public String UpdateAvailable;
    public MyResultData ResultData;
}

class MyResultData {
    public String SessionId;
    public String UserName;
    public String AccountId;
    public List<String> Roles;
    public String DisplayName;
    public int Status;
    public int Type;
}

ReturnData rd = new Gson().fromJson(jsonString, ReturnData.class);

@SerializedName("name")また、Gsonのアノテーションを使用して、JSONのPascalCaseフィールド名をJavaのcamelCaseフィールド名に変換することも検討します。

@SerializedName("OperationResult") public int operationResult;
于 2013-03-06T14:54:39.137 に答える
-1

これを試して:

java.lang.reflect.Type  type = new TypeToken<ReturnData>(){}.getType();
ReturnData rd = new Gson().fromJson(jsonString, type);
于 2013-03-06T12:27:05.680 に答える