Однострочный вывод из JSON.stringify

Я конвертирую сложный объект, используя строку JSON.

Мне нужен такой вывод, чтобы я мог легко связать его с моей моделью.

DateRequired: "2019-02-02"
DeliveryDestination: "test"
ProjectCode: "002P"
RequestItems: {InventoryItemsId: "2", Brand: "NIKE", Types: "Casual", Specification: "Mentality", ItemName: "Wild"},
{InventoryItemsId: "3", Brand: "PUMA", Types: "Running", Specification: "Energy", ItemName: "Wild"}

Но вместо этого я получаю это.

DateRequired: "2019-02-02"
DeliveryDestination: "test"
ProjectCode: "002P"
RequestItems: Array(2)
0: {InventoryItemsId: "2", Brand: "NIKE", Types: "Casual", Specification: "Mentality", ItemName: "Wild", …}
1: {InventoryItemsId: "3", Brand: "PUMA", Types: "Running", Specification: "Energy", ItemName: "Wild", …}
length: 2
__proto__: Array(0)
__proto__: Object

Это код, который публикует данные:

var items = postAllItems(); //this is an array
                var materialRequest = {
                    'DateRequired': $('#txtDateRequired').val(),
                    'ProjectCode': $('#txtProjectCode').val(),
                    'DeliveryDestination': $('#txtDeliveryDestination').val(),
                    'RequestItems': items
            };

 postMaterialRequest(materialRequest);

function postMaterialRequest(materials) {
            $.ajax({
                contentType: 'application/json',
                type: 'POST',
                url: '/api/PostMaterial',
                data: JSON.stringify(materials),
                success: function (data) {
                    console.info("Info Save " + data);                   
                },
                failure: function (response) {
                    console.info('Failed to save.');
                }
            });
        }

Это то, что я получаю от веб-API

Однострочный вывод из JSON.stringify

Второй вывод — это то, что вы получаете, когда используете неJSON.stringify: обычно это то, что вы получаете в консольном формате.

trincot 02.03.2019 00:43

Или используйте «JSON.stringify(object,null,2)» для красивого варианта.

Geert-Jan 02.03.2019 00:54

@ Geert-Jan, я пытался, но не повезло

j1rjacob 02.03.2019 08:00

спасибо за информацию @trincot, я обновил свой вопрос, чтобы сделать его более понятным.

j1rjacob 02.03.2019 10:29

Похоже, ваш вопрос действительно о чем-то другом: вы не можете ожидать синхронного отображения результата асинхронного результата. См. этот вопрос-ответ. В остальном вопрос не дает понять, что такое Count, что такое _items, что такое pimx.DTOs.RequestItemDto[0] (обводка на скриншоте больше не помогает) и как они относятся к вашему вопросу.

trincot 02.03.2019 10:41

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

j1rjacob 02.03.2019 10:57

В упомянутых вопросах и ответах есть вся информация. Проверьте это.

trincot 02.03.2019 11:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
7
1 007
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это является правильный вид вывода - это просто способ отображения объекта консолью. Использование консоли StackOverflow или использование JSON.stringify показывает желаемый результат:

var myObj = {
  DateRequired: "2019-02-02",
  DeliveryDestination: "test",
  ProjectCode: "002P",
  RequestItems: [{
      InventoryItemsId: "2",
      Brand: "NIKE",
      Types: "Casual",
      Specification: "Mentality",
      ItemName: "Wild"
    },
    {
      InventoryItemsId: "3",
      Brand: "PUMA",
      Types: "Running",
      Specification: "Energy",
      ItemName: "Wild"
    }
  ]
};

console.info(myObj);
console.info(JSON.stringify(myObj));
.as-console-wrapper { max-height: 100% !important; top: 0; }

когда я пытаюсь поставить его вручную, он работает ex. RequestItems: {InventoryItemsId: "2", Бренд: "NIKE", Типы: "Casual", Спецификация: "Mentality", ItemName: "Дикий"}, {InventoryItemsId: "3", Бренд: "PUMA", Типы: " Бег", Спецификация: "Энергия", ItemName: "Дикий"}

j1rjacob 02.03.2019 08:01
Ответ принят как подходящий

Я решаю свою проблему, используя приведенный ниже код, моя проблема заключается в том, чтобы не смешивать синхронную функцию с асинхронной. В котором пост ajax финиширует первым. Я использовал setTimeout для задержки публикации ajax. Благодаря ссылке @trincot.

function createObject() {
            var mr = { DateRequired: $('#txtDateRequired').val(), ProjectCode: $('#txtProjectCode').val(), DeliveryDestination: $('#txtDeliveryDestination').val(), RequestItems: [] };
            for (var i = 0; i < insMaterials.length; i++) {
                var mtr = insMaterials[i];
                alert(mtr);
                var RequestItems = {
                    'InventoryItemsId': mtr.InventoryItemsId,
                    'Brand': mtr.Brand,
                    'ItemName': mtr.ItemName,
                    'Quantity': mtr.qty,
                    'RefNo': 3,
                    'Comment': mtr.remarks,
                    'Specification': mtr.specification,
                    'Types': mtr.types,
                    'Unit': mtr.qty
                };
                mr.RequestItems.push(RequestItems);
            }
            return JSON.stringify(mr);
        }


function postMaterialRequest() {
            $.ajax({
                contentType: 'application/json',
                async: false,
                type: 'POST',
                url: '/api/PostMaterial',
                data: (createObject()),
                success: function (data) {
                    console.info("Info Save " + data);
                    toastr.success('Request was submitted successfully!');
                    del();
                },
                failure: function (response) {
                    console.info('Failed to save.');
                    toastr.error('Failed to save.');
                }
            });
        }


postAllItems();
setTimeout(postMaterialRequest, 3000);

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