Как избежать нумерации c с первым выравниванием Проблема при преобразовании строковых данных в массив json через Json Анализ в Jquery - PullRequest
0 голосов
/ 03 марта 2020

Вот пример кода возврата строковых данных из ajax

Result = "[
{"ProductCode":"0000001",
"ProductName":"BRINJAL LONG (GREEN)",
"HQ":"43.00",
"1104":"0.00",
"4758":"20.00",
"5379":"23.00",
"964":"2.00",
"ActualQty":"0.00",
"IsCheck":"True"}
]"

Я преобразовываю строку в массив json через Json Здесь разбираем пример кода

var myproduct = []; myproduct = JSON.parse(Result);

На самом деле мне нужен вывод, такой же, как порядок выравнивания строк, но я получаю, как эта цифра c идет первым. Пожалуйста, дайте несколько советов, как избежать этого автоматического выравнивания

'{964: "2.00", 
   1104: "0.00",
   4758: "20.00",
   5379: "23.00", 
   ProductCode: "0000001", 
   ProductName: "BRINJAL LONG (GREEN)",
   HQ: "43.00", 
   ActualQty :"0.00",
   IsCheck : "True"
}'

1 Ответ

0 голосов
/ 03 марта 2020

вам следует изменить форму данных, JavaScript JSON.parse() не позволяет вам контролировать это.

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

    Result = "[
    {"1.ProductCode":"0000001",
    "2.ProductName":"BRINJAL LONG (GREEN)",
    "3.HQ":"43.00",
    "4.1104":"0.00",
    "5.4758":"20.00",
    "6.5379":"23.00",
    "7.964":"2.00",
    "8.ActualQty":"0.00",
    "9.IsCheck":"True"}
    ]"
    
  2. или изменить часть значения и добавить элемент order. таким образом, вы можете снова сортировать вещи, используя это order значение

    Result = "[
    {
        "ProductCode":{
            "value": "0000001"
            "order": 1
        },
        "ProductName":{
            "value" : "BRINJAL LONG (GREEN)",
            "order" : 2
        },
       ....
    }]"
    
  3. , или лучшим решением будет отправить массив из одного объекта значения ключа. таким образом, синтаксический анализ json сохранит порядок массива. тогда у каждого элемента есть ключ и значение.

    Result = "[
        {"ProductCode":"0000001"},
        {"ProductName":"BRINJAL LONG (GREEN)"},
        {"HQ":"43.00"},
        {"1104":"0.00"},
        {"4758":"20.00"},
        {"5379":"23.00"},
        {"964":"2.00"},
        {"ActualQty":"0.00"},
        {"IsCheck":"True"}
    ]"
    
  4. гораздо лучшим решением будет установить ключ для каждого элемента, с ним гораздо проще работать без необходимости использовать Object.Keys() для получения значения ключа.

    Result = "[
        { "key" : "ProductCode", "value" :"0000001"},
        { "key" : "ProductName", "value" :"BRINJAL LONG (GREEN)"},
        { "key" : "HQ", "value" :"43.00"},
        { "key" : "1104", "value" :"0.00"},
        { "key" : "4758", "value" :"20.00"},
        { "key" : "5379", "value" :"23.00"},
        { "key" : "964", "value" :"2.00"},
        { "key" : "ActualQty", "value" :"0.00"},
        { "key" : "IsCheck", "value" :"True"}
    ]"
    

но этот вопрос просто подсказывает мне, что ваша проблема в другом месте. потому что вы полагаетесь на порядок данных. При таком способе кодирования ваш код потерпит неудачу, когда один из этих элементов go пропущен, или некоторые другие добавляются к нему.

...