Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将JSON转换为POJO Kotlin_Java_Android_Json_Kotlin - Fatal编程技术网

Java 如何将JSON转换为POJO Kotlin

Java 如何将JSON转换为POJO Kotlin,java,android,json,kotlin,Java,Android,Json,Kotlin,我有一个包含产品类别的JSON文件。我正在尝试将生成的JSON文件转换为Kotlin类,以便将来可以在RecyclerView中显示生成的数据。我创建了必要的POJO类,在日志中我看到我从服务器获得了正确的数据。但当我试图从片段中记录数据时,我发现我的数据是空的。我怎样才能解决这个问题? JSON示例: { "beauty_health": [ { "id": 1, "brand": "Ka

我有一个包含产品类别的JSON文件。我正在尝试将生成的JSON文件转换为Kotlin类,以便将来可以在RecyclerView中显示生成的数据。我创建了必要的POJO类,在日志中我看到我从服务器获得了正确的数据。但当我试图从片段中记录数据时,我发现我的数据是空的。我怎样才能解决这个问题? JSON示例:

{
  "beauty_health": [
    {
      "id": 1,
      "brand": "Kaya Youth",
      "category": "Beauty & Health",
      "name": "Hydro Replenish Face Wash",
      "description": "Hydro Replenish Face Wash, With Aloe Vera",
      "price": 42,
      "icon": ""
    },
    {
      "id": 2,
      "brand": "Kaya Youth",
      "category": "Beauty & Health",
      "name": "Oxy-Infusion Face Wash",
      "description": "Kaya Youth Oxy-Infusion Face Wash,100",
      "price": 18,
      "icon": ""
    }],
  "electronics": [
    {
      "id": 1,
      "brand": "OnePlus",
      "category": "Electronics",
      "name": "OnePlus 8",
      "description": "OnePlus 8T 64GB",
      "price": 250,
      "icon": ""
    },],
POJO类示例:

//产品列表类

data class ProductList(
    @SerializedName("beauty_health")
    var beautyHealth: List<BeautyHealth>,
    @SerializedName("electronics")
    val electronics: List<Electronic>,
    @SerializedName("fashion")
    val fashion: List<Fashion>,
    @SerializedName("image_slider")
    val imageSlider: List<ImageSlider>,
    @SerializedName("popular")
    val popular: List<Popular>,
    @SerializedName("sports")
    val sports: List<Sport>) : Serializable
我的存储库:

api.onFetchAllProducts().enqueue(object : Callback<ProductList> {
            override fun onFailure(call: Call<ProductList>, t: Throwable) {
            }

            override fun onResponse(call: Call<ProductList>, response: Response<ProductList>) {

                mutableLiveData.postValue(response.body())
            }
        })
        return mutableLiveData
我的日志:

D/HomeFragment: onCreateView: null

如果使用Kotlin的
数据类
作为您的
Gson
模型,必须为所有属性提供默认值

在Java中,所有对象都有默认的空值。如果选择使用Kotlin数据类作为具有非null属性的模型,并且JSON响应中缺少一个字段,则整个序列化将失败

例如,尝试改变这一点:

data class BeautyHealth(
    @SerializedName("brand")
    val brand: String,
    @SerializedName("category")
    val category: String,
    @SerializedName("description")
    val description: String,
    @SerializedName("icon")
    val icon: String,
    @SerializedName("id")
    val id: Int,
    @SerializedName("name")
    var name: String,
    @SerializedName("price")
    val price: Int) : Serializable
致:


你的
onFailure
是空的,你怎么知道调用是成功的呢?我在OkHttp日志中看到Intersportor必须使用它将gson转换为模型类gson()。从JSON(你的gson,POJO::class;java)这不是我的问题。在OnFailure中,我得到一个错误,提示->OnFailure:java.lang.IllegalStateException:应该是BEGIN\u对象,但在第1行第2列路径$处是BEGIN\u数组。但我不想得到一份清单。我想从JSON中获取类别并将其添加到产品列表中。但我不知道怎么做
mHomeViewModel.onGetProductsList().observe(viewLifecycleOwner, Observer { products ->

        Log.d(TAG, "onCreateView: $products")
    })
D/HomeFragment: onCreateView: null
data class BeautyHealth(
    @SerializedName("brand")
    val brand: String,
    @SerializedName("category")
    val category: String,
    @SerializedName("description")
    val description: String,
    @SerializedName("icon")
    val icon: String,
    @SerializedName("id")
    val id: Int,
    @SerializedName("name")
    var name: String,
    @SerializedName("price")
    val price: Int) : Serializable
data class BeautyHealth(
    @SerializedName("brand")
    val brand: String = "",
    @SerializedName("category")
    val category: String = "",
    @SerializedName("description")
    val description: String = "",
    @SerializedName("icon")
    val icon: String = "",
    @SerializedName("id")
    val id: Int = 0,
    @SerializedName("name")
    var name: String = "",
    @SerializedName("price")
    val price: Int = 0) : Serializable