我试图从JSON数据中获取一个特定的值。我可以成功地调用整个json数据jsonOutput
。但问题是当我在jsonOutput中调用一个特定的值时,它显示nullPointerError
。我不知道为什么我在调用数据类时丢失了数据。我用The problem occurs here
标记了丢失的部分。我如何才能获得adminArea1
?
我分享了一个数据类作为示例。你可以用“Kotlindata class File from JSON”创建数据类。我参考了很多答案和示例,但很难知道原因。
我的代码
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
binding.networkBtn.setOnClickListener(View.OnClickListener {
var thread = NetworkThread()
thread.start()
})
}
inner class NetworkThread : Thread() {
override fun run() {
var url =
URL("https://www.mapquestapi.com/geocoding/v1/reverse?key=LBK8QWxDPYHfmeYVlEP1IO3BVbWHyznB&" +
"location=Your_laptitue,Your_longitute&includeRoadMetadata=true&includeNearestIntersection=true")
var countryCodeBufferedReader =
BufferedReader(InputStreamReader(url.openConnection().getInputStream()))
var stringBuffer = StringBuffer()
do {
var string = countryCodeBufferedReader.readLine()
if (string != null) {
stringBuffer.append(string)
}
} while (string != null)
var jsonObject = JSONObject(stringBuffer.toString())
val gson: Gson = GsonBuilder().setPrettyPrinting().create()
val jsonOutput: String = gson.toJson(jsonObject)
//The problem occurs here
var countryData = gson.fromJson(jsonOutput, NameValuePairsXXXXX::class.java)
val jsonOutput2 = countryData.adminArea1
Log.d("jsonOutput", jsonOutput)
Log.d("jsonOutput2", jsonOutput2)
runOnUiThread {
binding.lapLonText.text = jsonOutput2
}
}
}
}
数据类别
2条答案
按热度按时间dkqlctbz1#
使用该类并使用Response数据类解析json,
如果您有任何问题class.java。
6vl6ewon2#
这是由于API通信引起的。我通过放置okHttpClient解决了我的问题。我添加了代码来帮助任何有同样问题的人。