Unescape JSON строка - PullRequest
       12

Unescape JSON строка

2 голосов
/ 30 октября 2011

У меня есть служба .NET, которая сообщает об экранированной JSON-строке

[
"{\"uid\":3298534883331,\"id\":\"foo\",\"name\":\"Foo Bar\",\"address\":{\"uid\":3298534883332,\"city\":\"Shanghai\",\"street\":\"Ke Yuan Street\"}}",
"{\"uid\":3298534883333,\"id\":\"foo\",\"name\":\"Foo Bar\",\"address\":{\"uid\":3298534883334,\"city\":\"Shanghai\",\"street\":\"Ke Yuan Street\"}}"
]

Со стороны Java я использую GSON, и она хочет иметь JSON

[
{"uid":0,"id":"foo","name":"Foo Bar","address":{"uid":0,"city":"Shanghai","street":"Ke Yuan Street"}},
{"uid":0,"id":"foo","name":"Foo Bar","address":{"uid":0,"city":"Shanghai","street":"Ke Yuan Street"}}
]

без выхода.Любая стандартная процедура для удаления строки JSON?

Вот часть .NET

    [OperationContract]
    [WebGet(
        UriTemplate = "{Database}/{ContainerName}?query={tag}",
        RequestFormat = WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json)]
    string[] Get(string database, string containerName, string tag);

Внутри нее используется JSON.net

Java-клиент

    String json = webResource.
        queryParam("query", "id = 'foo' AND name = 'Foo Bar'").
        get(String.class);

Из отладчика Eclipse я вижу различия в двух строках: что генерирует GSON и что возвращает. Вы можете отметить дополнительные «для каждого объекта в начале и в конце»

1 Ответ

0 голосов
/ 18 апреля 2012

Кажется, что ваш сервер на самом деле возвращает строковый массив:

string[] Get(string database, string containerName, string tag);

, и именно это получает клиент:

[
    "string 1",
    "string 2",
    ...
    "string N"
]

Вы должны вернуть массив объектов:

MyClass[] Get(string database, string containerName, string tag);

и тогда вы получите что-то вроде:

[
    {"MyProperty1": "value1_1", ..., "MyPropertyM": "value1_M"},
    {"MyProperty1": "value2_1", ..., "MyPropertyM": "value2_M"},
    ...
    {"MyProperty1": "valueN_1", ..., "MyPropertyM": "valueN_M"},
]

Будучи MyClass, определите так:

class MyClass
{
    public string MyProperty1 { get; set; }
    public string MyProperty2 { get; set; }
    ...
    public string MyPropertyM { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...