【问题标题】:Get string from jsonArray java android Studio [duplicate]从jsonArray java android Studio获取字符串[重复]
【发布时间】: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。

标签: java android json


【解决方案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 类来执行此操作。

    1. Jackson package 的依赖添加到您的build.gradle
    2. 像这样定义您的 JSON 响应类 ...
    class MyJsonResponse {
      List<MyResource> resource;
    }
    
    class MyResource {
     Double lat;
     Double lon;
    }
    
    1. 像这样创建对象映射器类的实例并使用它
    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)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-20
      • 2019-03-16
      • 2016-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-29
      相关资源
      最近更新 更多