Как я могу сосредоточиться только на некотором типе данных в файле JSON в Java? - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть JSON файл в следующем формате:

{
  "debugOutput": {
    "pathCalculationTime": 0,
    "pathTimes": [
      0
    ],
    "precalculationTime": 0,
    "renderingTime": 0,
    "timedOut": true,
    "totalTime": 0
  },
  "error": {
    "id": 0,
    "message": "PLAN_OK",
    "missing": [
      "string"
    ],
    "msg": "string",
    "noPath": true
  },
  "plan": {
    "date": 0,
    "from": {
      "lat": 0,
      "lon": 0,
      "name": "string",
      "orig": "string",
      "stopCode": "string",
      "vertexType": "string"
    },
    "itineraries": [{
      "duration": 0,
      "elevationGained": 0,
      "elevationLost": 0,
      "endTime": 0,
      "fare": {},
      "legs": [{
        "agencyId": "string",
        "agencyName": "string",
        "agencyTimeZoneOffset": 0,
        "agencyUrl": "string",
        "alerts": [{}],
        "alightRule": "string",
        "arrivalDelay": 0,
        "boardRule": "string",
        "departureDelay": 0,
        "distance": 0,
        "duration": 0,
        "endTime": 0,
        "from": {
          "lat": 0,
          "lon": 0,
          "name": "string",
          "orig": "string",
          "stopCode": "string",
          "vertexType": "string"
        },
        "headsign": "string",
        "headway": 0,
        "interlineWithPreviousLeg": true,
        "intermediateStops": [{
          "lat": 0,
          "lon": 0,
          "name": "string",
          "orig": "string",
          "stopCode": "string",
          "vertexType": "string"
        }],
        "isNonExactFrequency": true,
        "legGeometry": {
          "length": 0,
          "points": "string"
        },
        "mode": "WALK",
        "pathway": true,
        "realTime": true,
        "rentedBike": true,
        "route": "string",
        "routeColor": "string",
        "routeId": "string",
        "routeLongName": "string",
        "routeShortName": "string",
        "routeTextColor": "string",
        "routeType": 0,
        "serviceDate": "string",
        "startTime": 0,
        "steps": [{
          "absoluteDirection": "NORTH",
          "alerts": [{}],
          "area": true,
          "bogusName": true,
          "distance": 0,
          "elevation": [
            "string"
          ],
          "exit": "string",
          "lat": 0,
          "lon": 0,
          "relativeDirection": "DEPART",
          "stayOn": true,
          "streetName": "string"
        }],
        "to": {
          "lat": 0,
          "lon": 0,
          "name": "string",
          "orig": "string",
          "stopCode": "string",
          "vertexType": "string"
        },
        "transitLeg": true,
        "tripBlockId": "string",
        "tripId": "string",
        "tripShortName": "string"
      }],
      "startTime": 0,
      "tooSloped": true,
      "transfers": 0,
      "transitTime": 0,
      "waitingTime": 0,
      "walkDistance": 0,
      "walkLimitExceeded": true,
      "walkTime": 0
    }],
    "to": {
      "lat": 0,
      "lon": 0,
      "name": "string",
      "orig": "string",
      "stopCode": "string",
      "vertexType": "string"
    }
  },
  "requestParameters": {
    "app_id": "string",
    "app_key": "string",
    "arriveBy": "string",
    "date": "string",
    "fromPlace": "string",
    "maxWalkDistance": "string",
    "mode": "string",
    "time": "string",
    "toPlace": "string"
  }
}

Как видите, этот JSON имеет 4 основных объекта (debugOutput, error, plan и requestParameters). Я хочу сохранить в своей программе только те данные и объекты, которые находятся в объекте plan, избегая всех данных debugOutput, error и requestParameters.

Что позволяет мне мое текущее знание do это создать объект (dataJson), который содержит все 4 объекта этого Json (debugOutput, error, plan и requestParameters), а затем выполнить следующую строку с библиотекой Gson:

dataJson = new Gson().fromJson(jsonfile.json, DataJson.class);

Но это требует создания всех объектов и хранения информации, которая мне не нужна.

Как я могу прочитать это Json, используя библиотеку Gson, чтобы сразу сохранить все данные plan на plan объекте?

Заранее спасибо.

1 Ответ

0 голосов
/ 05 февраля 2020

Вы можете разобрать всю строку и просто выбрать нужное вам свойство, в данном случае объект "план".

JsonObject jsonObject = JsonParser.parseString(thejson).getAsJsonObject();
JsonObject planJson = jsonObject.get("plan").getAsJsonObject();

// Store planJson somewhere
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...