簡體   English   中英

java.lang.IllegalArgumentException:對象將被序列化為`null`:Android

[英]java.lang.IllegalArgumentException: Object would be serialized to `null`: Android

我最近一直在設置移動應用程序來與我的流星服務器一起工作。 作為其中的一部分,我必須從 android 傳遞流星網絡應用程序數據。 不幸的是,我收到一個錯誤,告訴我我傳遞的 java 對象“將被序列化為null ”。 我如何防止這種情況?

     JSONObject json = new JSONObject();
            try{
                json.put("Foo", "1");
                json.put("Blah", 0);
            }catch (JSONException e){

            }
            Object[] object = new Object[1];
            object[0] = json;
            System.out.println(object + ", " + object[0] + ", " + object[0].toString());
            mMeteor.call("xxx", object, new ResultListener() {
                @Override
                public void onSuccess(String result) {

                }
                @Override
                public void onError(String error, String reason, String details) {

                }
            });
        }

        @Override
        public void onError(String error, String reason, String details) {

        }
    });

Android/Meteor 接口庫函數

 public void callWithSeed(final String methodName, final String randomSeed, final Object[] params, final ResultListener listener) {
    // create a new unique ID for this request
    final String callId = uniqueID();

    // save a reference to the listener to be executed later
    if (listener != null) {
        mListeners.put(callId, listener);
    }

    // send the request
    final Map<String, Object> data = new HashMap<String, Object>();
    data.put(Protocol.Field.MESSAGE, Protocol.Message.METHOD);
    data.put(Protocol.Field.METHOD, methodName);
    data.put(Protocol.Field.ID, callId);
    if (params != null) {
        data.put(Protocol.Field.PARAMS, params);
    }
    if (randomSeed != null) {
        data.put(Protocol.Field.RANDOM_SEED, randomSeed);
    }
    send(data);
}

我遇到了同樣的問題,我的第一個錯誤是傳遞一個CharSequence而不是一個String作為參數(你的Object[] ),而我的另一個錯誤是傳遞一個Object[]作為另一個參數(我通過發送一個String來解決這個問題,像: String.valueOf(your_object_list) ) 不要忘記在服務器端處理這個,你會收到一個String而不是Object

JSONArray轉換為ListJSONObjectHashMap ,然后傳遞它們而不是原始JSONObjectJSONArray

在嵌套JSONObjectJSONArray情況下,您可以為轉換編寫遞歸函數,也可以使用GSON庫進行轉換。

有關轉換的更多詳細信息, 此 SO 帖子可能會有所幫助。

暫無
暫無

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

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