Что это за объект данных в этом формате?

#javascript #json

#javascript #json

Вопрос:

Меня попросили использовать некоторые данные JSON для отображения, но вместо этого мне был предоставлен этот формат:

 {size={XS=32, SM=34, MD=36, LG=38, XL=40, XXL=42}, length={XS=28, SM=30, MD=32, LG=34, XL=36, XXL=38}}
  

Это не какой-либо объект JSON, который я видел раньше. Это в другом формате, о котором я просто не знаю?

Моя цель — взять эти данные и создать таблицу, подобную такой:

 <table>
    <tr>
        <td>SM</td>
        <td>MD</td>
        <td>LG</td>
        <td>XL</td>
        <td>XXL</td>
    </tr>
    <tr>
        <td>size</td>
        <td>32</td>
        <td>34</td>
        <td>36</td>
        <td>38</td>
        <td>40</td>
        <td>42</td>
    </tr>
    <tr>
        <td>length</td>
        <td>28</td>
        <td>30</td>
        <td>32</td>
        <td>34</td>
        <td>36</td>
        <td>38</td>
    </tr>
</table>  

Спасибо.

Комментарии:

1. Это не JSON, и это не JavaScript.

2. Откуда вы получаете эти данные? Можете ли вы получить от его источника правильный JSON? Если нет, вам нужно будет вручную проанализировать эту строку.

3. Все вы были правы. Вместо этого мне передавался объект Java HashMap… Я просто никогда не работал с ними, поэтому не смог его идентифицировать.

Ответ №1:

Это почти JSON, замените = на :, вставьте двойную «.

Вероятно, есть более простой способ, чем я сделал здесь, кто-то с навыками регулярных выражений справится лучше.

 var x = "{size={XS=32, SM=34, MD=36, LG=38, XL=40, XXL=42}, length={XS=28, SM=30, MD=32, LG=34, XL=36, XXL=38}}";
var str = x.split('=').join('":').
  split('{').join('{"').split(', ').join(', "');
var y = JSON.parse(str);
console.log(y);  

Комментарии:

1. Спасибо. Делаем это ответом, поскольку это работает. Я поговорил с людьми, которые предоставили мне данные, и это был объект JAVA, а не объект JSON… Я прошу их переделать это, чтобы мне не пришлось разбирать это.