【问题标题】:how to add a custom object into azure in android?如何在android中将自定义对象添加到azure中?
【发布时间】:2016-11-24 17:45:24
【问题描述】:

我有这个 CardModel 类,我无法将 cardmodel 对象添加到 azure 数据库中。我有一个 cardmodel 表,但没有添加任何内容,但我的应用程序构建良好且不会崩溃。

我在这里唯一的自定义对象是 HoursOpen,其他的都是 double、string、int 或前一个的 arraylist。

这是我的卡片模型类。

public class CardModel
{

    private double latitude;
    private double longitude;
    private int cardImage;
    private String cardName;
    private String cardLocality;
    private String caption;
    private ArrayList<String> tags = new ArrayList<>();
    private ArrayList<String> images = new ArrayList<>();
    private int cardID;
    public  int defaultPoints = 100;
    private String user_id;
    private String website = "www.facebook.com";
    private String phoneNumber = "4086671474";
    private HoursOpen hoursOpen = new HoursOpen();
    private String referenceToImages;
    private String id;


    public CardModel()
    {
        setInitialID();
    }

    //Getters, if you want to receive information from this class.
    public int getCardID()
    {
        return cardID;
    }

    public String getReferenceToImages()
    {
        return referenceToImages;
    }

    public String getCardName()
    {
        return cardName;
    }

    public String getCardLocality()
    {
        return cardLocality;
    }

    public int getCardImage()
    {
        return cardImage;
    }

    public int getDefaultPoints()
    {
        return defaultPoints;
    }

    public String getUser_id()
    {
        return user_id;
    }

    public String getCaption()
    {
        return caption;
    }

    public ArrayList<String> getImages()
    {
        return images;
    }

    public double getLatitude()
    {
        return latitude;
    }

    public double getLongitude()
    {
        return longitude;
    }

    public String getWebsite()
    {
        return website;
    }
    public String getPhoneNumber()
    {
        return phoneNumber;
    }
    public HoursOpen getHoursOpen()
    {
        return hoursOpen;
    }
    public ArrayList<String> getTags()
    {
        return tags;
    }

    //Setters
    public void setCardImage(int image)
    {
        this.cardImage = image;
    }

    public void setReferenceToImages(String referenceToImages)
    {
        this.referenceToImages = referenceToImages;
    }

    public void setCardName(String cardName)
    {
        this.cardName = cardName;
    }

    public void setcardPoints(int points)
    {
        this.defaultPoints = points;
    }

    private void setInitialID()
    {
        Random randomNumberGenerator = new Random();
        cardID = randomNumberGenerator.nextInt(1000000);
    }

    public void setCardLocality(String locality)
    {
        this.cardLocality = locality;
    }

    public void setCaption(String caption)
    {
        this.caption = caption;
    }

    public void setImages(ArrayList<String> images)
    {
        this.images = images;
    }

    public void setLatitude(double latitude)
    {
        this.latitude = latitude;
    }

    public void setLongitude(double longitude)
    {
        this.longitude = longitude;
    }
    public void setWebsite(String website)
    {
        this.website = website;
    }
    public void setPhoneNumber(String phoneNumber)
    {
        this.phoneNumber = phoneNumber;
    }
    public void setHoursOpen(HoursOpen hoursOpen)
    {
        this.hoursOpen = hoursOpen;
    }
    public void setTags(ArrayList<String> tags)
    {
        this.tags = tags;
    }
    public void addTag(String tag)
    {
        tags.add(tag);
    }
    public void setUser_id(String user_id)
    {
        this.user_id = user_id;
    }
    public void setCardID(Integer cardID)
    {
        this.cardID = cardID;
    }
}

现在在我的活动课上,我有以下内容:

  1. //Azure private MobileServiceClient mClient;

  2. 在 onCreate() 中

    try {
        mClient = new MobileServiceClient("my link");
        CardModel testCard = new CardModel();
        testCard.setName("sampleCard");
        azureExample(testCard);
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }
    
  3. private void azureExample(CardModel cardModel){ mClient.getTable(CardModel.class).insert(cardModel); }

【问题讨论】:

    标签: android azure azure-sql-database azure-mobile-services azure-android-sdk


    【解决方案1】:

    根据官方文档How to use the Android client library for Mobile Apps,在“如何:自定义序列化”小节中有与您的问题相关的内容。

    客户端假设后端的表名、列名和数据类型都与客户端定义的数据对象完全匹配。服务器和客户端名称可能不匹配的原因可能有很多。在您的场景中,您可能需要进行以下类型的自定义:

    • 应用服务表中使用的列名与您在客户端中使用的名称不匹配。
    • 使用与客户端中映射到的类名称不同的应用服务表。
    • 启用自动属性大写。
    • 向对象添加复杂属性。

    上面的粗体部分是您的问题的原因。同时,该解决方案已包含在文档中,如下所示。

    如何:将对象或数组属性存储到表中

    到目前为止,我们的序列化示例涉及原始类型,例如整数和字符串。原始类型很容易序列化为 JSON。如果我们要添加一个不会自动序列化为 JSON 的复杂对象,我们需要提供 JSON 序列化方法。要查看如何提供自定义 JSON 序列化的示例,请查看博客文章 Customizing serialization using the gson library in the Mobile Services Android client

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多