【问题标题】:java.lang.IllegalArgumentException: Object would be serialized to `null`: Androidjava.lang.IllegalArgumentException:对象将被序列化为`null`:Android
【发布时间】:2016-10-28 18:49:11
【问题描述】:

我最近一直在设置移动应用程序以使用我的流星服务器。作为其中的一部分,我必须从 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);
}

【问题讨论】:

  • 你有解决办法吗?

标签: java android meteor


【解决方案1】:

JSONArray 转换为ListJSONObjectHashMap,然后传递它们而不是原始的JSONObjectJSONArray

在嵌套JSONObjectJSONArray的情况下,您可以编写递归函数进行转换,也可以使用GSON库进行转换。

有关转换的更多详细信息,this SO post 可能会有所帮助。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,我的第一个错误是传递 CharSequence 而不是 String 作为参数(您的 Object[]),我的另一个错误是传递 Object[] 作为另一个参数(我解决了通过发送String 来代替,例如:String.valueOf(your_object_list))不要忘记在服务器端处理此问题,您将收到String 而不是Object

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-19
      • 2016-10-30
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多