#json #jsonschema
#json #jsonschema
Вопрос:
Я пытаюсь использовать API, но документация действительно плохая. Я получил эту схему JSON, но я ее не понимаю. Что я должен включить в запрос?
url:https://mpc.getswish.net/qrg-swish/api/v1/prefilled
Я пробовал это, но это не работает:
{
"payee":{
"editable":{
"editable":"false"
},
"swishString":{
"value":"0721876507"
}
},
"size":600,
"border":20,
"transparent":false,
"format":"png"
}
Вот схема JSON
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Swish pre-filled qr code generator",
"description": "REST interface to get a QR code that the Swish app will interpret as a pre filled code",
"definitions": {
"editable": {
"description ": "Controls if user can modify this value in Swish app or not",
"type": "object",
"properties": {
"editable": {
"type": "boolean",
"default": false
}
}
},
"swishString": {
"type": "object",
"properties": {
"value": {
"type": "string",
"maxLength": 70
}
},
"required": [
"value"
]
},
"swishNumber": {
"type": "object",
"properties": {
"value": {
"type": "number"
}
},
"required": [
"value"
]
}
},
"type": "object",
"properties": {
"format": {
"enum": [
"jpg",
"png",
"svg"
]
},
"payee": {
"description": "Payment receiver",
"allOf": [
{
"$ref": "#/definitions/editable"
},
{
"$ref": "#/definitions/swishString"
}
]
},
"amount": {
"description": "Payment amount",
"allOf": [
{
"$ref": "#/definitions/editable"
},
{
"$ref": "#/definitions/swishNumber"
}
]
},
"message": {
"description": "Message for payment",
"allOf": [
{
"$ref": "#/definitions/editable"
},
{
"$ref": "#/definitions/swishString"
}
]
},
"size": {
"description": "Size of the QR code. The code is a square, so width and height are the same. Not required is the format is svg",
"value": "number",
"minimum": 300
},
"border": {
"description": "Width of the border.",
"type": "number"
},
"transparent": {
"description": "Select background color to be transparent. Do not work with jpg format.",
"type": "boolean"
}
},
"required": [
"format"
],
"anyOf": [
{
"required": [
"payee"
]
},
{
"required": [
"amount"
]
},
{
"required": [
"message"
]
}
],
"additionalProperties": false,
"maxProperties": 5
}
API должен возвращать QR-код.
Комментарии:
1. Как вы извлекаете JSON? Пожалуйста, укажите весь соответствующий код
2. Я извлекаю ее, как в первом примере
3. Первым примером является JSON, а не код для извлечения JSON
4. Я использую postman для вызова API.
5. Возможно, вы захотите прочитать json-schema.org/learn/getting-started-step-by-step.html и взгляните на json-schema.org/understanding-json-schema
Ответ №1:
Честно говоря, я не потратил время на изучение схемы JSON, но ваш пример, вероятно, должен выглядеть примерно так:
{
"payee": {
"value": "0721876507",
"editable": false
},
"size": 600,
"border": 20,
"transparent": false,
"format": "png"
}
Есть другие параметры, которые вы можете использовать:
{
"payee": {
"value": "1239006032",
"editable": false
},
"message": {
"value": "LIV",
"editable": true
},
"amount": {
"value": 100,
"editable": true
},
"format": "png",
"size": 300,
"border": 0,
"transparent": true
}
Честно говоря, я думаю, что разработчики Swish API пытаются выглядеть умными, усложняя вещи. Они, конечно, должны были предоставить пример данных JSON вместо того, чтобы заставлять потребителей понимать их схему JSON. Кроме того, я считаю, что их опубликованная схема неверна. Второй приведенный мной пример работает, даже если он не проверяется в соответствии со схемой JSON («Количество свойств объекта 7 превышает максимальное количество 5»).
Ответ №2:
Вот минимальный и довольно бесполезный запрос, который возвращает действительный QR-код
{
"format": "png",
"size": 300
}
И вот более полезный пример, который работает
{
"format": "png",
"size": 300,
"transparent": false,
"amount": {
"value": 999.99,
"editable": true
},
"payee": {
"value": "0701000000",
"editable": false
},
"message": {
"value": "Hello",
"editable": false
}
}