区块链技术博客
www.b2bchain.cn

Android DynamoDBMappingException:预期的S值 – java程序员分享

本文介绍了Android DynamoDBMappingException:预期的S值 – java程序员分享,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

我正在尝试使用DynamoDbMapper和最新的aws android sdk从dynamodb表映射json对象:com.amazonaws:aws-android-sdk-ddb-mapper:2.13.0,我看到此异常:“ DynamoDBMappingException :预期的S值…

我表中的json对象具有3个属性,其中2个是字符串,第三个是复杂对象列表。我已经使用@DynamoDbDocument注释为复杂对象创建了一个对象,并使用了正确的封送处理注释,但是它似乎并未将json对象正确封送为java对象。
复杂对象是采用以下格式的json对象:

{   "allCitiesList": [     {       "city": "Auckland, New Zealand",       "times": {         "recTimes": [           "Jan1",           "Jan2"         ]       }     } } 
public class CitiesDO {     private String city;     private String country;     private List<AllCitiesObject> allCitiesList; ...get/setters for other fields...      @DynamoDBMarshalling(marshallerClass =      AllCitiesJSONMarshaller.class)     public List<AllCitiesObject> getAllCitiesList() {         return allCitiesList;     }      public void setAllCitiesList(List<AllCitiesObject> allCitiesList) {         this.allCitiesList = allCitiesList;     } } 
@DynamoDBDocument public class AllCitiesObject {     @DynamoDBAttribute(attributeName = "allCitiesList")     private String data;      public AllCitiesObject(){}      public String getData() {         return data.toString();     }      public void setData(String data) {         this.data = data;     } } 

class AllCitiesJSONMarshaller extends JsonMarshaller<AllCitiesObject> {}

还尝试过使用自定义编组器处理此方法,但没有成功:

public class MyCustomMarshaller implements DynamoDBMarshaller<List<AllCitiesObject>> {      private static final ObjectMapper mapper = new ObjectMapper();     private static final ObjectWriter writer = mapper.writer();      @Override     public String marshall(List<AllCitiesObject> obj) {          try {             return writer.writeValueAsString(obj);         } catch (JsonProcessingException e) {             throw new RuntimeException(                     "Unable to marshall the instance of " + obj.getClass()                             + "into a string", e);         }     }      @Override     public List<AllCitiesObject> unmarshall(Class<List<AllCitiesObject>> clazz, String json) {         final CollectionType                 type =                 mapper.getTypeFactory().constructCollectionType(List.class, AllCitiesObject.class);         try {             return mapper.readValue(json, type);         } catch (Exception e) {             throw new RuntimeException("Unable to unmarshall the string " + json                     + "into " + clazz, e);         }     }  } 

例外是:
DynamoDBMappingException:期望的S值{L:[{M:{times = {M:{recTimes = {L:[{S:Jan1,},{S:Jan2,}

我很难将json解组为字符串,尽管我认为我已经正确设置了它。谁能帮助我了解我所缺少的内容以及如何解决此问题?我将衷心感谢您的帮助!

参考方案

不推荐使用DynamoDBMarshalling,因此建议使用更新的DynamoDBTypeConverted批注。

Mapping Arbitrary Data上有一些有用的注释。

您还可以在this answer中查看我的示例

总之,您将创建一个AllCities纯Java对象。然后,您编写一个简单的转换器类,该类告诉DynamoDB如何将AllCities对象转换为字符串以进入DynamoDB。同样,转换器类告诉您的应用程序如何将字符串转换回Java对象。

Android:如何为wrap_content设置高度动画? – java

我需要使用ValueAnimator来使用户拖动特定视图时出现自定义“放置字段”。 (我想将字段从gone, height = 0更改为visible, height = wrap_content)。我已经尝试过以下问题的解决方案:How to animate to wrap_content?当我在单个TextView上使用它时,答案就起作用了,但是当我尝试…

绑定Java库Xamarin.Android – java

我花了两天时间在每个论坛,文档,tuto,博客等上寻找答案。我为实习生启动了一个Android应用程序,因为我不懂Java,所以用xamarin C#开发了它。直到最近一切都还不错,但现在我需要集成一个SDK才能在应用程序中使用POS(销售点),但是该库是用Java编写的,即使跟随文档或辅导老师,我也无法将其与xamarin绑定(我什至无法调试)。这里有人已…

为什么我的应用在启动时总是崩溃-Android – java

刚刚遵循了有关如何制作按钮和活动的youtube指南。我按照他的代码减小字体大小,并且在启动时一直崩溃。有人知道为什么吗?public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { su…

不需要选择回收站查看项目 – java

viewHolder.optiontxt1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { viewHolder.optiontxt1.setCompoundDrawablesWithIntrinsicBounds(R.dra…

如何在TabLayout中自定义选定的选项卡指示器? – java

我想更改带有自定义图标的TabLayout的所选标签指示器,该标签指示器应遵循相同的行为(当用户向下一个标签滑动时,图标将相应移动)。该类中没有默认方法,因为您只能实现选项卡的布局自定义。我决定看一下TabLayout的source code,但1)我无法在类中找到定义制表符指示器绘制时形状的定义的要点,以及2)我找不到甚至完全导入该类。我还希望-如果可能的…

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » Android DynamoDBMappingException:预期的S值 – java程序员分享
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们