2016-12-26 2 views
-1

Я хочу создать данные JSON в этом формате, где я хочу дать строку JSON в элементе value, но он дает ошибку, что что-то не так в формате JSON. Что это ошибка, которую я делаюФормат JSON дает ошибку при попытке передать строку JSON внутри данных JSON

{ 
    "metafield": { 
    "namespace": "inventory", 
    "key": "test", 
    "value": "[{"5":10,"8":10}]", 
    "value_type": "string" 
} 
} 
+0

Вы создаете JSON неправильно. 'JSON.stringify()' является * единственным * способом создания JSON. Вы, кажется, делаете что-то еще, например 'stringValue1 + stringValue2'. Не делай этого. При этом вам не нужна строка JSON внутри строки JSON. Это глупо. Даже если вы исправите эту непосредственную проблему, результат все равно будет бесполезным, поэтому я рекомендую вам пересмотреть свой подход. – Tomalak

+0

Вы можете проверить свой json действительный или не используя [эту ссылку] (http://json.parser.online.fr/), где вы можете найти, что пойдет не так – Curiousdev

ответ

0

Используйте одинарные кавычки для атрибутов объектов в массиве:

{ 
    "metafield":{ 
     "namespace":"inventory", 
     "key":"test", 
     "value":"[{'5':10,'8':10}]", 
     "value_type":"string" 
    } 
} 

Вы можете перепроверить достоверность ваших JSON здесь: https://jsonformatter.curiousconcept.com. Эта служба даст вам более подробную информацию о вашей ОШИБКЕ.

0

вы можете использовать ' или \" для этого формата, как 'string' или \"string\"

Я не знаю вас требование, но может быть вы делаете что-то неправильно с массивом, может быть вам нужно JSON в формате ниже

{ 
    "metafield": { 
     "namespace": "inventory", 
     "key": "test", 
     "value": [{ 
      "5": 10, 
      "8": 10 
     }], 
     "value_type": "string" 
    } 
} 
1

, когда вы прошли в стоимости в виде массива или объекта в JSON строку не нужно " как "[{'5':10,'8':10}]" просто передается значение объекта массив как этот [{"5":10,"8":10}]

Полностью работает эта строка

{ 
    "metafield": 
    { 
    "namespace": "inventory", 
    "key": "test", 
    "value": [{"5":10,"8":10}], 
    "valuetype": "string" 
    } 
} 

Если вы пишете "[{'5':10,'8':10}]" его считают простой строки.

1

Вы должны избежать ", вот как вы можете написать его

{ 
 
    "metafield": { 
 
    "namespace": "inventory", 
 
    "key": "test", 
 
    "value": "[{\"5\":10,\"8\":10}]", 
 
    "value_type": "string" 
 
} 
 
}

0

Вы JSON формат неверен. использование этого:

{ 
    "metafield": { 
     "namespace": "inventory", 
     "key": "test", 
     "value": [{ 
      "5": 10 
     }, { 
      "8": 10 
     }], 
     "value_type": "string" 
    } 
} 
0
{ 
    "metafield": { 
    "namespace": "inventory", 
    "key": "test", 
    "value": "[{"5":10,"8":10}]", 
    "value_type": "string" 
    } 
} 

Как и выше "value": "[{"5":10,"8":10}]",, если вы хотите передать "value" ключевое значение, как array, чем этот путь не так, чтобы JSon строку. Если вы хотите передать "value" ключевое значение как array, то это значение "value": [{"5":10,"8":10}], по этой причине вы получили недействительную ошибку json sting.

Надеюсь, это поможет.