Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
JSON中的动态未知字段_Json_Kotlin_Dynamic_Field - Fatal编程技术网

JSON中的动态未知字段

JSON中的动态未知字段,json,kotlin,dynamic,field,Json,Kotlin,Dynamic,Field,我正在尝试从以下URL构建正确的类: 目前,我的结构如下: data class NearEarthObject (val asteroidObjects : Map<String, DateSelected>) 这是我的Java代码: class MainActivity : AppCompatActivity() { val URLAPI = Constants.BASE_URL override fun onCreate(savedInstanceSta

我正在尝试从以下URL构建正确的类:

目前,我的结构如下:

data class NearEarthObject (val asteroidObjects : Map<String, DateSelected>)
这是我的Java代码:

class MainActivity : AppCompatActivity() {

    val URLAPI = Constants.BASE_URL

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        asteroidActivityRv.layoutManager = LinearLayoutManager(this)
        asteroidActivityRv.adapter = null

        val retrofitAsteroids = Retrofit.Builder()
            .baseUrl(URLAPI)
            .addConverterFactory(GsonConverterFactory.create())
            .build()

        val apiAsteroid = retrofitAsteroids.create(ApiAsteroids::class.java)
        val callAsteroid = apiAsteroid.getAsteroids()
        callAsteroid.enqueue(object : Callback<NearEarthObject> {
            override fun onFailure(call: Call<NearEarthObject>?, t: Throwable?) {
                Log.e("TAG fail", t.toString())
            }

            override fun onResponse(
                call: Call<NearEarthObject>,
                response: Response<NearEarthObject>
            ) {
                for (res in response.body().asteroidObjects) {
                    // Log.e("TAG result", res.value.date)
                }
            }

        })
    }
}
有人知道我做错了什么吗

非常感谢你的帮助

它看起来像response.body()

我认为这是一个问题,因为你无法收到回应使用地图 它需要一个明确的类(包括字段和值)

 data class Asteroid(
    val id: Long,
    val codename: String,
    val closeApproachDate: String,
    val absoluteMagnitude: Double,
    val estimatedDiameter: Double,
    val relativeVelocity: Double,
    val distanceFromEarth: Double,
    val isPotentiallyHazardous: Boolean
)
class MainActivity : AppCompatActivity() {

    val URLAPI = Constants.BASE_URL

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        asteroidActivityRv.layoutManager = LinearLayoutManager(this)
        asteroidActivityRv.adapter = null

        val retrofitAsteroids = Retrofit.Builder()
            .baseUrl(URLAPI)
            .addConverterFactory(GsonConverterFactory.create())
            .build()

        val apiAsteroid = retrofitAsteroids.create(ApiAsteroids::class.java)
        val callAsteroid = apiAsteroid.getAsteroids()
        callAsteroid.enqueue(object : Callback<NearEarthObject> {
            override fun onFailure(call: Call<NearEarthObject>?, t: Throwable?) {
                Log.e("TAG fail", t.toString())
            }

            override fun onResponse(
                call: Call<NearEarthObject>,
                response: Response<NearEarthObject>
            ) {
                for (res in response.body().asteroidObjects) {
                    // Log.e("TAG result", res.value.date)
                }
            }

        })
    }
}
 java.lang.NullPointerException: Attempt to invoke interface method 'java.util.Set java.util.Map.entrySet()' on a null object reference
        at com.example.nasanwsproject.MainActivity$onCreate$1.onResponse(MainActivity.kt:44)
        at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)