Структура JSON master-detail - PullRequest
       7

Структура JSON master-detail

0 голосов
/ 29 июля 2011

Я пытаюсь смоделировать простой счет, который имеет объект счета с минимально ArrayList и объект lineitem с ArrayList значений для данной строки.Я получаю свой набор результатов, зацикливаюсь на нем и каждый раз создаю новый объект lineitem, заполняю lineitem ArrayList желаемыми значениями поля и затем добавляю этот lineitem в накладной ArrayList.Затем я добавляю это в JSONArray, а затем «выравниваю» его с помощью toString (), чтобы получить мою строку json для отправки клиенту.Проблема в том, что все линии существуют, но в виде «голого» массива объектов lineitem.Мне нужна другая структура, которую я могу зациклить на стороне клиента, получить доступ к каждому объекту lineitem, распечатать строку на экране и продолжить.Как мне структурировать его так, чтобы у меня был «внешний» объект, который я мог бы зациклить для обработки элементов строки?

1 Ответ

0 голосов
/ 31 июля 2011

Вам необходимо "проанализировать" значения / массив на стороне сервера, чтобы создать строку, которая может интерпретироваться как JSON на клиенте. Существует множество библиотек (как серверных, так и клиентских, которые могут вам в этом помочь). В конечном счете, вам нужна строка, которая выглядит примерно так, как показано ниже, когда она поступает на стороне клиента.

var strJsonInvoive = "[InvoiceID : 1, Date : "01/01/1900", otherProperties: "value" ,
//the Invoice Detail Objects below will result in an array of objects
InvoiceDetails : [InvoiceDetailID : 1, Description: "desc", Price: 100, Quantity: 1, Tax: true],
[InvoiceDetailID : 2, Description: "desc", Price: 200, Quantity: 2, Tax: false],
[InvoiceDetailID : 3, Description: "desc", Price: 300, Quantity: 3, Tax: true]]";

На данный момент вышеприведенное является чисто строкой, поэтому вам снова нужно проанализировать эту клиентскую сторону, чтобы превратить ее в объект, например, вы можете использовать jQuery для анализа строки json следующим образом:

var jsonInvoice = jQuery.parseJSON(strJsonInvoice);

Теперь у вас будет объект, с которым вы можете работать следующим образом:

for(var 1=0; i<jsonInvoice.InvoiceDetails.length;i++)
{
    if (jsonInvoice.InvoiceDetails[i].Price > 50)
        //do something if price is greater than 50
}

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

Dave

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...