【问题标题】:java.lang.IllegalStateException: Not a JSON Object: [] on Azure operationjava.lang.IllegalStateException:不是 JSON 对象:Azure 操作上的 []
【发布时间】:2017-03-20 01:49:05
【问题描述】:

我正在使用 Azure 移动应用程序 在注册期间插入我的新用户

然后它会抛出异常消息: java.lang.IllegalStateException:不是 JSON 对象:[]

(我在用户表中没有实体

我的代码:

public static void registerUserToTheDataBase(final User user){
    AsyncTask<Void, Void, Void> asyncTask = new AsyncTask<Void, Void, Void>() {
        @Override
        protected Void doInBackground(Void... voids) {
            try {
                UserManager.user = mUserManager.insert(user).get();
            } catch (Exception e) {
                e.printStackTrace();
            }

            return null;
        }
    };
    AsyncTaskController.runAsyncTask(asyncTask);
}

我已检查所有数据库属性的名称是否正确

这是我的用户对象

public class User implements Serializable {
@com.google.gson.annotations.SerializedName("id")
private String id;
@com.google.gson.annotations.SerializedName("name")
private String name;
@com.google.gson.annotations.SerializedName("live")
private String live;
@com.google.gson.annotations.SerializedName("age")
private int age;
@com.google.gson.annotations.SerializedName("password")
private String password;
@com.google.gson.annotations.SerializedName("account")
private String account;
@com.google.gson.annotations.SerializedName("phone")
private String phone;
@com.google.gson.annotations.SerializedName("email")
private String email;
@com.google.gson.annotations.SerializedName("imageUrl")
private String imageUrl;

@com.google.gson.annotations.SerializedName("productsHistoryRecord")
private List<ProductImp> productsHistoryRecord;
@com.google.gson.annotations.SerializedName("productsSales")
private List<ProductImp> productsSales;
@com.google.gson.annotations.SerializedName("productsInCart")
private List<ProductImp> productsInCart;
@com.google.gson.annotations.SerializedName("mails")
private List<Mail> mails;


public String getImageUrl() {
    return imageUrl;
}

public void setImageUrl(String imageUrl) {
    this.imageUrl = imageUrl;
}

public String getId() {
    return id;
}

public String getName() {
    return name;
}

public int getAge() {
    return age;
}

public String getAccount() {
    return account;
}

public String getLive() {
    return live;
}

public String getPassword() {
    return password;
}

public String getPhone() {
    return phone;
}

public void setName(String name) {
    this.name = name;
}

public void setAccount(String account) {
    this.account = account;
}

public void setAge(int age) {
    this.age = age;
}

public void setLive(String live) {
    this.live = live;
}

public void setPassword(String password) {
    this.password = password;
}

public void setPhone(String phone) {
    this.phone = phone;
}

public void setId(String id) {
    this.id = id;
}

public void setEmail(String email) {
    this.email = email;
}

public String getEmail() {
    return email;
}

public List<Mail> getMails() {
    return mails;
}

public void setMails(List<Mail> mails) {
    this.mails = mails;
}

public List<ProductImp> getProductsHistoryRecord() {
    return productsHistoryRecord;
}

public void setProductsHistoryRecord(List<ProductImp> productsHistoryRecord) {
    this.productsHistoryRecord = productsHistoryRecord;
}

public List<ProductImp> getProductsInCart() {
    return productsInCart;
}

public void setProductsInCart(List<ProductImp> productsInCart) {
    this.productsInCart = productsInCart;
}

public List<ProductImp> getProductsSales() {
    return productsSales;
}

public void setProductsSales(List<ProductImp> productsSales) {
    this.productsSales = productsSales;
}

@Override
public String toString() {
    return "user information :" + name + "," + age + "," + live + "," + phone + "," + account + "," + password
      +   ","   + productsHistoryRecord + "," + productsInCart + "," +  productsSales ;
}

}

用户和产品之间存在三种关系

这也是我实例化 MobileServerClient 的方式

public static void initiate(Context context) throws MalformedURLException {
    mClient = new MobileServiceClient(LINK,context).withFilter(new ProgressFilter());
    mClient.setAndroidHttpClientFactory(new OkHttpClientFactory() {
        @Override
        public OkHttpClient createOkHttpClient() {
            OkHttpClient client = new OkHttpClient();
            client.setReadTimeout(20, TimeUnit.SECONDS);
            client.setWriteTimeout(20, TimeUnit.SECONDS);
            return client;
        }
    });
    initiateTables();
}

public static void initiateTables(){
    mUserManager = mClient.getTable("User",User.class);
    mProduct = mClient.getTable("Product",ProductImp.class);
    mMail = mClient.getTable("Mail",Mail.class);
    mLockerImp = mClient.getTable("Locker",LockerImp.class);
    mCart = mClient.getTable("Cart",CartList.class);
}

这是我的 User 表的后端数据库架构 我在第一个单词中将所有属性更改为大写 否则会出错。

非常感谢。

【问题讨论】:

  • 这里没有足够的信息。用户对象是什么样的? mUserManager的定义是什么?你是如何实例化客户端的?
  • 对不起!我已经在文章中补充了。
  • 查看错误信息,您尝试将空的 JSON 数组 [] 解析为对象。
  • 但我不明白它是怎么来的?我使用 MobileService API 来插入 User 并确保用户不是 Null ,谢谢。

标签: android json azure-mobile-services azure-android-sdk gson


【解决方案1】:

尝试将网址http修改为https

【讨论】:

  • 是的!你解决了我的问题!你让我今天一整天都感觉很好 !我只添加了's',问题就解决了!!!!!!!!!!!!!!!!!!
猜你喜欢
  • 2017-07-28
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 2011-12-25
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
相关资源
最近更新 更多