Google端点 - java

我有一个关于从Python中的Endpoints模型方法检索查询的特定问题。

    # DataPointModel GET LIST api method
    @DataPointModel.query_method(query_fields=('user_key', ), # Fields from which the   method is querying from
                                 path='datapoint/list/{user_key}', # REST api parameters
                                 name='datapoint.list_get_by_user_key') # Metod name
    def datapoint_list_get_by_user_key(self, query):
        '''
        Returns the DataPointModel object model list by its user KEY
        '''
        return query

我在Android(Java)上拥有客户端。
问题是,这将返回一个DataPointModelCollection,其中不包含
列表(dataPointsCollection.getDatapointList(),此属性为null)。

DataPointModelCollection包含“项目”,因此它包含正确的对象,
如果打印到toString()并显示为JSON。但是问题仍然存在,因为
我想将检索到的DataPointModelCollection映射为Java对象DataPointModel的列表。

我真的很想听听对此的一些见解。让我麻烦的是我可以上传一个DataPointModelCollection,在其中设置一个列表...但是它只是
不能正常工作吗?

参考方案

编辑2:对不起,我还是不明白你在问什么。这是实际的答案-请只阅读其他部分以获取关注。

This docs page说明如何提取客户端Android“ -Collection”生成类中的实体。您需要调用.getItems(),而不是诸如“ getDatapointList()”之类的命名函数。在“关于支持的退货类型”下:

可序列化类型的列表实际上,Endpoints生成的是一个新的“ Collection” JSON类,该类与其他所有客户端相似
模型类。例如,如果模型中有一个对象
由Lobster.java表示,并且您想返回一个List,
该库将具有LobsterCollection.java。您可以检索
通过调用getItems()在客户端中的龙虾列表。

编辑:非常抱歉,我承认我略读了您的问题,我的大脑解析了Java。 Python首先回答:

蟒蛇

您应该熟悉Message对象及其Fields。您不能简单地返回python对象。消息对象包含多个Field值,这些值用于将对象转换为JSON对象,以通过API HTTP请求进行传输。

若要从Endpoints函数返回一个Message对象,该对象具有多个Message对象的列表(例如,每个对象包装一个StringField和一个DateTimeField),定义此返回类型的Message类应在其中包含MessageField,允许您将Messages(例如我们创建的包含StringField和DateTimeField的类型)放入其他Messages(我们的返回类型)中。另外,在此字段上,您将需要设置repeated=True,如以下代码片段所示:

# REPEATED IN MESSAGE FIELD IN ORDER CLASS
class Lot(messages.Message):
    price = messages.IntegerField(1, required=True)
    quantity = messages.IntegerField(2, required=True)

class Order(messages.Message):
    symbol = messages.StringField(1, required=True)
    total_quantity = messages.IntegerField(2, required=True)
    trade_type = messages.EnumField(TradeType, 3, required=True)
    lots = messages.MessageField(Lot, 4, repeated=True) # REPEATED FIELD!
    limit = messages.IntegerField(5)

爪哇

您需要实现一个包含集合的包装器类。 See this question。

阅读here以获得有关参数和返回类型的更多信息。

有关有趣的答案,请参见here,该答案解释了如何添加多个实体类型作为参数(简短的故事:不能执行实体类型的多个参数,不能执行实体类型的集合,需要使用包含以下内容的包装实体两个实体)

Java-如何将此字符串转换为日期? - java

我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…

Java:找到特定字符并获取子字符串 - java

我有一个字符串4.9.14_05_29_16_21,我只需要获取4.9。数字各不相同,所以我不能简单地获得此char数组的前三个元素。我必须找到最正确的.并将其子字符串化直到那里。我来自Python,因此我将展示Python的实现方法。def foobar(some_string): location = some_string.rfind('.&…

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…