Преобразование JSON в JSON-LD (+ Schema.org)

Ниже приведен пример данных JSON, которые я получаю в запросе вызова JS Ajax. Как я могу преобразовать это в JSON-LD и добавить в тег head?

   [
    {
    "resort": "100",
    "resortCategory": "BEST",
    "resortDistanceMiles": 37.1,
    "resortDistanceKms": 59.7,
    "currencySymbol": "$",
    "resortAvailable": "AVAILABLE",
    "resortSummary": {
      "resort": "19100",
      "latitude": 29.460099,
      "longitude": -90.321457,
      "timeZone": "America/New_York",
      "name": "Best Western Isabelle Court",
      "description": "Welcome to other!",
      "address1": "17026 Highway 3235",
      "city": "Galliano",
      "phoneNumber": "+1 985-325-3800",
      "faxNumber": "985/325-3808",
      "postalCode": "70354",
      "stateCode": "LA",
      "state": "Louisiana",
      "countryCode": "US",
      "country": "United States",
      "currencyCode": "USD",
      "currencyDescription": "U.S. DOLLARS",
      "resortCategory": "BEST",
      "checkOutNoticeTime": "11:00 a.m.",
      "checkInNoticeTime": "3:00 p.m.",
      "propertyType": "INTOWN",
      "prearrivalEmail": true
    },
    "searchableAmenities": [
      {
        "text": "Air Conditioning at property",
        "attributeValueCode": "AIR CONDITIONING"
      },
      {
        "text": "AIR CONDITIONED",
        "attributeValueCode": "AIRCON"
      },
      {
        "text": "AM/FM alarm clock",
        "attributeValueCode": "ALRMCK"
      },
      {
        "text": "Beach on premises or nearby",
        "attributeValueCode": "BEACH"
      },
      {
        "text": "Best Western",
        "attributeValueCode": "BEST WESTERN"
      },
      {
        "text": "Complimentary Breakfast",
        "attributeValueCode": "BRKFST COMP"
      },
      {
        "text": "Business center on premises (fax/copier/computer etc)",
        "attributeValueCode": "BUSCTR"
      },
      {
        "text": "Cable or satellite TV on premises.",
        "attributeValueCode": "CABLE TV"
      },
      {
        "text": "Guests that are 12 years old and younger are considered children.",
        "attributeValueCode": "CHILD 12"
      },
      {
        "text": "Coffee makers available in room.",
        "attributeValueCode": "COFFEE MAKERS"
      },
      {
        "text": "RJ-11 Modular/dataports phone jacks available in room.",
        "attributeValueCode": "DATA PORT"
      },
      {
        "text": "24 hour front desk",
        "attributeValueCode": "DESK24"
      },
      {
        "text": "Physically challenged facilities available",
        "attributeValueCode": "DISABL"
      },
      {
        "text": "Property has elevator access to floors.",
        "attributeValueCode": "ELEVATOR"
      },
      {
        "text": "Express checkout available",
        "attributeValueCode": "EXCKOT"
      },
      {
        "text": "Exercise facilities available on premises.",
        "attributeValueCode": "EXERCISE"
      },
      {
        "text": "Free parking available.",
        "attributeValueCode": "FPRKNG"
      },
      {
        "text": "Free local telephone calls",
        "attributeValueCode": "FRCLLS"
      },
      {
        "text": "Free Breakfast Offered at Property",
        "attributeValueCode": "FREE BREAKFAST"
      },
      {
        "text": "Free continental breakfast - Includes juice, bread or sweet roll, and coffee.",
        "attributeValueCode": "FREE CONT. BRKFST"
      },
      {
        "text": "All Guest Rooms are Hardwired or Wireless",
        "attributeValueCode": "FRWL-HW-GUESTRM"
      },
      {
        "text": "Free Wireless in Public Areas and Guest Rooms",
        "attributeValueCode": "FRWL-PUBGUEST"
      },
      {
        "text": "In-room hair dryers.",
        "attributeValueCode": "HAIR DRYERS"
      },
      {
        "text": "High Speed Internet Access",
        "attributeValueCode": "HIGH SPEED"
      },
      {
        "text": "Higher rates may apply for special events and holidays.",
        "attributeValueCode": "HOLIDAY/EVENT RATES"
      },
      {
        "text": "Inside Corridors",
        "attributeValueCode": "INSIDE-CORR"
      },
      {
        "text": "Irons and ironing boards available in room.",
        "attributeValueCode": "IRONS/IRONING BOARDS"
      },
      {
        "text": "Microwave oven in room.",
        "attributeValueCode": "MICROWAVE"
      },
      {
        "text": "Multi-lingual staff.",
        "attributeValueCode": "MULTI-LINGUAL"
      },
      {
        "text": "No pets allowed.",
        "attributeValueCode": "NO PETS"
      },
      {
        "text": "Non-smoking rooms are available.",
        "attributeValueCode": "NO SMOKING"
      },
      {
        "text": "Property entirely non-smoking",
        "attributeValueCode": "NONSMOKING"
      },
      {
        "text": "Packages are available.",
        "attributeValueCode": "PACKAGE"
      },
      {
        "text": "Refrigerators in rooms.",
        "attributeValueCode": "REFRIGERATORS"
      },
      {
        "text": "Suites at property with active rates",
        "attributeValueCode": "SUITES"
      }
    ],
    "resortSearchRate": {
      "resortRatePlan": "RACK",
      "resortRateCode": "RACK",
      "totalAmount": 129,
      "resortRoomCategory": "2290273"
    },
    "tripAdvisor": {
      "resort": "19100",
      "medianUserRating": 4.0,
      "reviewCount": 90,
      "tripAdvisorId": 578901
    },
    "resortRestriction": ""
       }
    ]

Когда вы добавили тег поисковая оптимизация, хотите ли вы использовать словарь Schema.org, и ваша цель состоит в том, чтобы претендовать на использование расширенных фрагментов на страницах результатов поисковой системы? Или вы просто хотите, чтобы ваши данные были доступны, не имея в виду конкретного потребителя или варианта использования?

unor 18.08.2018 02:18

Я хочу использовать словарь schema.org.

Sri 19.08.2018 05:39
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
2
473
1

Ответы 1

Вы должны сопоставить свои свойства со свойствами Schema.org.

Кажется, ваши данные относятся к курорту, поэтому вы можете использовать тип Resort. На этой странице типа перечислены все свойства, которые Resort может иметь в Schema.org.

Например, ваш searchableAmenities может быть сопоставлен с amenityFeature Schema.org, где каждое значение имеет тип LocationFeatureSpecification.

Для соответствующих свойств, которые невозможно сопоставить (поскольку Schema.org не имеет свойств для каждого случая), вы можете использовать additionalProperty.

Есть два способа сопоставления:

  • Вы можете опубликовать все свои данные, используя свой собственный словарь, и использовать словарь Schema.org только там, где это возможно.
  • Или вы можете использовать только словарь Schema.org и опустить данные, которые нельзя сопоставить.

Есть ли какая-либо библиотека js, которую я мог бы использовать, чтобы иметь данные выше json в качестве входных данных, отображать json + ld в качестве вывода? Если нет, есть ли какие-нибудь полезные примеры для сопоставления?

Sri 22.08.2018 00:03

@Sri: Я не думаю, что это возможно автоматически сопоставить их. Можно было бы получить предложения для свойств с одинаковыми именами, но это, конечно, не удастся, если вы назовете что-то по-другому или если у вас есть свойства для одного и того же элемента, а Schema.org нужны подпункты (например, для адреса Resort , Schema.org может потребоваться элемент PostalAddress). - Для сопоставления вручную я описал в своем ответе, что вам нужно проверить, какие свойства Schema.org Resort может иметь, а затем проверить, какие из них у вас тоже есть.

unor 22.08.2018 00:11

Другие вопросы по теме