0

我有这个CardModel类,我不能将一个cardmodel对象添加到azure数据库中。我有一个cardmodel表,但没有任何东西被添加,但我的应用程序生成良好,不会崩溃。如何在android中将自定义对象添加到azure中?

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

这是我的cardmodel类。

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

现在在我的活动课我有followning:

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

回答

1

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

客户端假定后端的表名,列名和数据类型都完全匹配客户端中定义的数据对象。可能有多种原因导致服务器和客户端名称可能不匹配。在您的方案中,您可能需要执行以下种类的自定义:

  • App Service表中使用的列名与您在客户端中使用的名称不匹配。
  • 使用与其在客户端中映射到的类名称不同的应用程序服务表。
  • 打开自动资产大写。
  • 将复杂属性添加到对象。

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

如何:存储一个对象或数组属性到表

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

相关问题