当前位置: 首页 > 知识库问答 >
问题:

预期BEGIN_OBJECT,但在第3行第1列路径$上是STRING

高琛
2023-03-14

我正在尝试通过改造将字符串类型列表发送到mysql数据库。当我尝试使用postman时,我获得了成功,但我收到了来自android studio的错误消息。

我的API接口:

@FormUrlEncoded
@POST("yesilegeservices/insertJob.php")
fun insertJob  (@Field("Token")         token:String, 
                @Field("StartingDate")  StartingDate:String, 
                @Field("TargetTime")    TargetTime:String,
                @Field("JobContent")    JobContent:String,
                @Field("StaffList[]")   StaffList:List<String>,  // My List
                @Field("ReleaseDate")   ReleaseDate:String, 
                @Field("KindId")        kindId:String):Single<JobInsertResponse>

我的响应数据类:

data class JobInsertResponse(
@SerializedName("job") @Expose val incomingId:List<singleUuid>,
@SerializedName("jobInsertSuccess") val success:Int
)

data class singleUuid (
@SerializedName("JobId") @Expose val uuid:Int
)

Php响应:

{"job":[{"JobId":"15"}],"jobInsertSuccess":1}

Android Studio错误消息:

java.lang.IllegalStateException: Expected BEGIN_OBJECT but was 
STRING at line 3 
column 1 path $

OkHttp日志:

2021-07-02 15:49:31.350 16777-16916/com.thic.yesilege 
I/okhttp.OkHttpClient: --> POST 

http://10.0.2.2:8888/yesilegeservices/insertJob.php
2021-07-02 15:49:31.350 16777-16916/com.thic.yesilege 
I/okhttp.OkHttpClient: Content-Type: application/x-www-form- 
urlencoded

2021-07-02 15:49:31.351 16777-16916/com.thic.yesilege 
I/okhttp.OkHttpClient: Content-Length: 211

2021-07-02 15:49:31.352 16777-16916/com.thic.yesilege 
I/okhttp.OkHttpClient: 
Token=yN4XGdFIzIMOrgE3Q4rB1jqoNJUbpfOqHI3IuuiUU&StartingDate=02- 
07- 
2021&TargetTime=15.49&JobContent=lorem%20impsun%20dolor&
StaffList%5B%5D=10&StaffList%5B%5D=11&StaffList%5B%5D=12
&ReleaseDate=02-07-2021&KindId=1

2021-07-02 15:49:31.352 16777-16916/com.thic.yesilege 
I/okhttp.OkHttpClient: --> END POST (211-byte body)
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege 
I/okhttp.OkHttpClient: <-- 200 OK 

http://10.0.2.2:8888/yesilegeservices/insertJob.php (28ms)
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege 
I/okhttp.OkHttpClient: Date: Fri, 02 Jul 2021 12:49:39 GMT

2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege 
I/okhttp.OkHttpClient: Server: Apache/2.4.46 (Unix) 
OpenSSL/1.0.2u PHP/8.0.0 mod_wsgi/3.5 Python/2.7.13 
mod_fastcgi/mod_fastcgi-SNAP-0910052141 mod_perl/2.0.11 

Perl/v5.30.1
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege 
I/okhttp.OkHttpClient: X-Powered-By: PHP/8.0.0
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege 
I/okhttp.OkHttpClient: Content-Length: 98
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege 
I/okhttp.OkHttpClient: Keep-Alive: timeout=5, max=100
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege 
I/okhttp.OkHttpClient: Connection: Keep-Alive

2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege 
I/okhttp.OkHttpClient: Content-Type: text/html; charset=UTF-8
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege 
I/okhttp.OkHttpClient:                 
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege 
I/okhttp.OkHttpClient:             
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege 
I/okhttp.OkHttpClient: Incorrect date value: '02-07-2021' for 
column 'ReleaseDate' at row 1
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege 
I/okhttp.OkHttpClient: <-- END HTTP (98-byte body)   

我认为问题出在我发布的列表中,因为如果我删除列表,结果是成功的。

怎么了?

共有2个答案

空浩淼
2023-03-14

日期有问题。Mysql数据库接受日期格式=“yyyy-MM-dd”,但我的日期格式为“dd-MM-yyyy”。

慕容博涛
2023-03-14

我认为问题在于你们的数据类。您的jobs arraylist包含对象,在对象中有一个jobId字符串,但您将其解析为整数。

尝试此解决方案可能会有所帮助。

data class JobInsertResponse(
        @SerializedName("job") @Expose val incomingId:List<singleUuid>,
        @SerializedName("jobInsertSuccess") val success:Int
    )

    data class singleUuid (
        @SerializedName("JobId") @Expose val uuid:String
    )
 类似资料:
  • 我正在开发一个电子学习应用程序。但是我在从JsonObject解析时遇到了一个问题。你能给我一个简单易懂的方法来做这件事吗? {"状态":true,"类别": [ { "category_id":"1","category_name":"印度尼西亚语","category_detail":null,"category_thumbnail":"0" }, { "category_id":"2","c

  • 我收到了firebase函数和dialogflow的响应,其中包含了我进一步实现所需的一些信息。响应是一个JSON,我将其保存在中,它是一个HashMap(字符串,对象)类型的变量。 我搜索过其他类似的线程,但奇怪的是,我的问题出现在第2列,而不是第1列,我在json中没有看到问题。这是gson部分。错误被抛出到带有属性的行上! 这是回应JSON:

  • 在尝试将json文本文件解析为餐厅对象的数组列表时,我遇到了错误“应为BEGIN\u数组,但在第1行第2列路径处为BEGIN\u对象。”我不知道哪里弄错了,因为我的Restaurant类中的数据成员与json文件中的字段完全对应。 主要的 餐厅类 txt文件

  • 问题内容: 我知道这不是第一次有人问这个问题,但是有了Retrofit2,我找不到适合我问题的正确解决方案。我遵循了在线教程,效果很好。当我将相同的代码应用于自己的端点时,会出现以下异常:我不知道该如何解决。 接口: 客户代码: 此代码与此有效负载一起使用: 但与此不: 我的音乐课: 问题答案: 当您说“此代码正在使用此有效负载:…而不是与此有效:: …”时,这是预期的,这就是假定的工作方式。实际

  • 我正在尝试运行此应用程序,但当我尝试登录时,我在“logcat”中看到此错误。消息“Success Login”表示它已被记录,并且有到数据库的连接,但我不知道在哪里等待对象,在哪里接收字符串。 10-11 14:54:10.481 2532-7430/com.alvardev.demos.limaculturalD/com.alvardev.demos.limacultural.http.Res

  • 问题内容: 我有这种方法: 我想解析一个JSON: 但是我收到一条错误消息: com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_OBJECT,但位于第1行第1列 问题答案: 即使没有看到您的JSON字符串,您也可以从错误消息中得知,它不是要解析为类实例的正确结构。 Gson希望您的JSON字符串