簡體   English   中英

JSON字符串到Java對象

[英]Json string to java object

我正在上課

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字符串分配給上述類。我正在使用GSON將json字符串分配給java對象。在普通的類中,我可以將json字符串分配給java對象。 但是對於這個課程,我無法直接分配。 請任何人幫助我,現在我要分配,

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

您可以從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/

由於您的Java類在任何形式,形狀或形式上都不類似於JSON,因此您將遇到問題。

  • 問題1: OperationResult應該為int
  • 問題2:您將ResultData聲明為Object ... Java不能那樣工作。

您需要您的POJO來匹配JSON:

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);

我還將考慮使用Gson的@SerializedName("name")批注將JSON中的PascalCase字段名稱轉換為Java中的camelCase字段名稱。

@SerializedName("OperationResult") public int operationResult;

嘗試這個:

java.lang.reflect.Type  type = new TypeToken<ReturnData>(){}.getType();
ReturnData rd = new Gson().fromJson(jsonString, type);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM