2012-05-17 5 views
1

Я искал много сайтов, но не смог найти решение моей проблемы. В основном мое требование немного сложно, и иногда я чувствую, что это невозможно. Может кто-нибудь мне помочь?JSON массив с объектом в другом объекте

Мое требование: у меня есть 3 класса, которые наследуются от интерфейса. Теперь я хочу, чтобы создать массив JSON, который имеет следующую структуру:

interface i { 
} 

class A implements i { 
    field l; 
    field 2; 
} 

Прежде всего спасибо за ур интерес в решении моей проблемы, Все объекты, о которых я говорил в моих вопросах сохранения состояния базы данных объектов. У меня есть контактный объект, объект связи и адресный объект, все объекты сохранения db Один контакт имеет несколько сообщений и несколько адресов. так, контакт сохраняется в таблице и связи и адресов в 2-х различных таблиц, со ссылкой на уникальный идентификатор контакта некоторые вещи, как

контактов таблице:

ID Имя Фамилия

3 хуг аЬс

таблица связи:

номер документа ContactID

адрес таблица:

ID ContactID место -3 Индия

после сохраняющейся в базе данных я хочу создать JSON массив, который я хочу отправить в запросе на сервер.

final Collection<Syncable> collection = new ArrayList<Syncable>(); 
     collection.add(contact); 
     collection.add(comm); 
     collection.add(address); 

     result = HttpRestUtil.post(url,*** new Gson().toJson(collection)***,JSON,header); 

Gson(). ToJson (коллекция) возвращает JSON в строки, которые я хочу, чтобы отправить в стороне сервера. выглядит строка выглядит следующим образом

[{"firstname":"xyz","lastname":"abc"},   //contact   
{"number":"99999999"},      //communication 
{"place":"india"}        //address 
] 

но мой сервер реализован, который принимает JSON формат

[ {"firstname":"xyz", 
"lastname":"abc", 
{"number":"999999999"} 
{"place":"india"} 
}] 

сервера кодируется как таковой весь JSON десериализируются к объектам контакта, связи, адрес

Я надеюсь, что я ясно в моем вопросе на этот раз alteast еще раз спасибо много

class B implements i { 
    field 3; 
    field 4; 
} 

class C implements i { 
    field 5; 
    field 6; 
} 

Теперь я хочу массив JSON, который имеет следующий формат, это JSON имеет типа А

[ 
    "field1": "value", 
    "field2": "value", 
    "objectB": "{ 'field3':'value','field4':'value'}", 
    "objectC": "{ 'field5':'value','field6':'value'}" 
] 

Мой Requirment является B, C классы должны быть поля А класса.

Один из методов, который может дать мне решение, заключается в том, чтобы сделать классы B и C внутренними классами A, но моя объектная структура не позволяет этого. Помогите с этим получить высокую оценку.

Заранее спасибо

+1

Какой язык это? Ява? – carlosfigueira

+0

Да, в android – srivani

ответ

2

У меня есть несколько вопросов/комментариев:

  • Если JSON предназначен для представления вашего класса, он должен быть объекта, а не массив. Переключите скобки в фигурные скобки.

  • Если экземпляры B и C хранятся в полях экземпляра A, вы должны обновить модель своего класса, чтобы отразить это. В настоящее время они всего лишь трех различных классов. Все ваши поля - это строки, основанные на вашем размещенном JSON. Это поможет, если вы добавите информацию о типе в поля в объявлениях классов.

  • Было бы неловко публиковать код, который вы используете для создания JSON.

0

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

Я изменил мой контакт объект содержит контакты и адреса в качестве полей

public class Contact 
{ 
     String firstName; 
     String lastName; 
     Communication comm[]; 
     Address address[]; 
} 

связи и адрес являются два различных класса

после установки значения Контактной объекта

new Gson().toJson(contact); 

дает мне json string i required

ссылка:

http://en.wikipedia.org/wiki/GSON

Смежные вопросы