从jsonArray java android Studio获取字符串[重复]

Posted

技术标签:

【中文标题】从jsonArray java android Studio获取字符串[重复]【英文标题】:Get string from jsonArray java android Studio [duplicate] 【发布时间】:2021-12-20 02:21:00 【问题描述】:

    "resource": [
        "devid": "862057040386432",
        " time": "2021-11-02 12:36:30",
        "etype": "G_PING",
        "engine": "OFF",
        "lat": "9.235940",
        "lon": "78.760240",
        "vbat": "3944",
        "speed":"7.49",
        "plnt": "10",

        "fuel": 0
    ]

此时我可以访问“资源”JSON 数组,但不确定如何获得 "lat""lon" 值在 for 循环中。对不起,如果这个描述不是太清楚,我对编程有点陌生。

【问题讨论】:

欢迎来到 Stack Overflow。我强烈建议您使用 tour 了解 Stack Overflow 的工作原理并阅读 How to Ask。这将帮助您提高问题的质量。 对于每个问题,请显示您尝试过的尝试以及您从尝试中得到的错误消息。 顺便说一句:您的 JSON 无效。看看带有 speed 属性的线。 您需要解析 JSON,将其存储在某个对象中,然后访问 lat 和 lon。我知道一个来自 Java docs.oracle.com/javaee/7/api/javax/json/package-summary.html 的库,不确定它是否适用于 android 【参考方案1】:
const data = 
    resource: [
        devid: "862057040386432",
        time: "2021-11-02 12:36:30",
        etype: "G_PING",
        engine: "OFF",
        lat: "9.235940",
        lon: "78.760240",
        vbat: "3944",
        speed:"7.49",
        plnt: "10",
        fuel: 0
    
    ]
  ;
  
  const latAndLongVersionOne = data.resource.map(res => [res.lat, res.lon]);
  const latAndLongVersionTwo = data.resource.map((lat, lon) => [lat, lon]);
  const latAndLongVersionThree = data.resource.map((lat, lon) => (lat, lon));

  console.log('Lat and long: ', latAndLongVersionOne); // Nested array with long and lat (values names has to be inferred)
  console.log('Lat and long: ', latAndLongVersionTwo); // Same result with another syntax
  console.log('Lat and long: ', latAndLongVersionThree); // Array of objects with caption

【讨论】:

【参考方案2】:

您可以使用ObjectMapper 类来执行此操作。

    Jackson package 的依赖添加到您的build.gradle 像这样定义您的 JSON 响应类 ...
class MyJsonResponse 
  List<MyResource> resource;


class MyResource 
 Double lat;
 Double lon;

    像这样创建对象映射器类的实例并使用它
var mapper = new ObjectMapper()
var jsonString = // obtain your JSON string somehow
// Convert JSON string to object
var myResponse= objectMapper.readValue(jsonCarArray,MyJsonResponse.class)

for(var resource : myResponse.resources) 
   // Here you get the values
   print(resource.lat + " " + resource.lon)

【讨论】:

以上是关于从jsonArray java android Studio获取字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将 JsonArray 对象转换为要在 spinner java android 上使用的字符串数组?

从 Android 将 JSONArray 传递给 PHP

从 Android 获取带有 StringRequest 的 JSONArray

如何解决 JSONArray 问题,无法获取数据,Android Studio

从 JSONArray 转换为 ArrayList<CustomObject> - Android

Android Kotlin Volley 如何从 JSONArray 中获取价值