Есть ли способ объединить 2 json файлов программно? - PullRequest
0 голосов
/ 22 апреля 2020

Для текущей ситуации в США есть США json, но json показывает только Штаты, а мне также нужны координаты, чтобы разместить их на карте.

данные США

Здесь у нас есть long и lat для каждого государства, не уверен, как я могу объединить 2, чтобы объединить их в один файл, добавив координаты для каждого штата.

Данные США json - это:

[
  {
    "date": 20200421,
    "state": "AK",
    ...
  },
  {
    "date": 20200421,
    "state": "AL",
    "positive": 5231,
    "negative": 43295,...

Для каждого штата, на который я смотрю добавление:

[
  {
    "date": 20200421,
    "state": "AK",
    "lat": "63.588753",
    "long": "-154.493062",

После этого можно будет загрузить Это. Или есть какой-то другой способ, которым я мог бы программно получить координаты вместо того, чтобы добавлять их каждый раз? Не знаю, как к нему подойти.

ОБНОВЛЕНИЕ

Также добавлено php tag, поскольку это может быть сделано через бэкэнд.

1 Ответ

1 голос
/ 22 апреля 2020

Если вы составляете словарь с информацией о широте и долготе в формате:

{'AK': {lat:"63.588753", long: "-154.493062"},
 'AL': {lat:"32.318231", long: "-86.902298"}}

Чтобы получить информацию в словаре, вы можете использовать скрипт Scrapper на предоставленном вами сайте (запустить в консоли браузера):

JSON.stringify(Array.from(document.querySelector('.devsite-table-wrapper').children[0].children[0].children).reduce((acc,item) => ({...acc, [item.children[0].textContent]: {lat: item.children[1].textContent, long : item.children[2].textContent} })))

Он перебирает все строки таблицы и создает словарь

Результаты:

{
   "AK":{
      "lat":"63.588753",
      "long":"-154.493062"
   },
   "AL":{
      "lat":"32.318231",
      "long":"-86.902298"
   },
   "AR":{
      "lat":"35.20105",
      "long":"-91.831833"
   },
   "AZ":{
      "lat":"34.048928",
      "long":"-111.093731"
   },
   "CA":{
      "lat":"36.778261",
      "long":"-119.417932"
   },
   "CO":{
      "lat":"39.550051",
      "long":"-105.782067"
   },
   "CT":{
      "lat":"41.603221",
      "long":"-73.087749"
   },
   "DC":{
      "lat":"38.905985",
      "long":"-77.033418"
   },
   "DE":{
      "lat":"38.910832",
      "long":"-75.52767"
   },
   "FL":{
      "lat":"27.664827",
      "long":"-81.515754"
   },
   "GA":{
      "lat":"32.157435",
      "long":"-82.907123"
   },
   "HI":{
      "lat":"19.898682",
      "long":"-155.665857"
   },
   "IA":{
      "lat":"41.878003",
      "long":"-93.097702"
   },
   "ID":{
      "lat":"44.068202",
      "long":"-114.742041"
   },
   "IL":{
      "lat":"40.633125",
      "long":"-89.398528"
   },
   "IN":{
      "lat":"40.551217",
      "long":"-85.602364"
   },
   "KS":{
      "lat":"39.011902",
      "long":"-98.484246"
   },
   "KY":{
      "lat":"37.839333",
      "long":"-84.270018"
   },
   "LA":{
      "lat":"31.244823",
      "long":"-92.145024"
   },
   "MA":{
      "lat":"42.407211",
      "long":"-71.382437"
   },
   "MD":{
      "lat":"39.045755",
      "long":"-76.641271"
   },
   "ME":{
      "lat":"45.253783",
      "long":"-69.445469"
   },
   "MI":{
      "lat":"44.314844",
      "long":"-85.602364"
   },
   "MN":{
      "lat":"46.729553",
      "long":"-94.6859"
   },
   "MO":{
      "lat":"37.964253",
      "long":"-91.831833"
   },
   "MS":{
      "lat":"32.354668",
      "long":"-89.398528"
   },
   "MT":{
      "lat":"46.879682",
      "long":"-110.362566"
   },
   "NC":{
      "lat":"35.759573",
      "long":"-79.0193"
   },
   "ND":{
      "lat":"47.551493",
      "long":"-101.002012"
   },
   "NE":{
      "lat":"41.492537",
      "long":"-99.901813"
   },
   "NH":{
      "lat":"43.193852",
      "long":"-71.572395"
   },
   "NJ":{
      "lat":"40.058324",
      "long":"-74.405661"
   },
   "NM":{
      "lat":"34.97273",
      "long":"-105.032363"
   },
   "NV":{
      "lat":"38.80261",
      "long":"-116.419389"
   },
   "NY":{
      "lat":"43.299428",
      "long":"-74.217933"
   },
   "OH":{
      "lat":"40.417287",
      "long":"-82.907123"
   },
   "OK":{
      "lat":"35.007752",
      "long":"-97.092877"
   },
   "OR":{
      "lat":"43.804133",
      "long":"-120.554201"
   },
   "PA":{
      "lat":"41.203322",
      "long":"-77.194525"
   },
   "PR":{
      "lat":"18.220833",
      "long":"-66.590149"
   },
   "RI":{
      "lat":"41.580095",
      "long":"-71.477429"
   },
   "SC":{
      "lat":"33.836081",
      "long":"-81.163725"
   },
   "SD":{
      "lat":"43.969515",
      "long":"-99.901813"
   },
   "TN":{
      "lat":"35.517491",
      "long":"-86.580447"
   },
   "TX":{
      "lat":"31.968599",
      "long":"-99.901813"
   },
   "UT":{
      "lat":"39.32098",
      "long":"-111.093731"
   },
   "VA":{
      "lat":"37.431573",
      "long":"-78.656894"
   },
   "VT":{
      "lat":"44.558803",
      "long":"-72.577841"
   },
   "WA":{
      "lat":"47.751074",
      "long":"-120.740139"
   },
   "WI":{
      "lat":"43.78444",
      "long":"-88.787868"
   },
   "WV":{
      "lat":"38.597626",
      "long":"-80.454903"
   },
   "WY":{
      "lat":"43.075968",
      "long":"-107.290284"
   }
}

Затем вы можете составить данные, используя функцию карты и оператор распространения, и добавить координаты для каждого элемента массива, например,

    const data = [{
        "date": 20200421,
        "state": "AK"
      },
      {
        "date": 20200421,
        "state": "AL",
        "positive": 5231,
        "negative": 43295
       }
       ]

       const dictionary = {'AK': {lat:"63.588753", long: "-154.493062"},
       'AL': {lat:"32.318231", long: "-86.902298"}}

       const result = data.map(item => ({...item, lat: dictionary[item.state].lat, long: dictionary[item.state].long }))
       
       console.log(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...