2011-10-30 159 views
2

我有一个报告回逃脱JSON字符串UNESCAPE 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一个.NET服务,并希望有转义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"}} 
] 

是否有任何标准程序unescape 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生成和什么回来 你可以注意一个额外的“每个对象在开始和结束

+0

你是如何显示的字符串?它真的*逃脱了,还是只是从调试器中获得的东西?你如何从你的.NET应用程序返回字符串? –

+0

更新后的模式详细信息 – user579806

回答

-1

看来你的服务器实际上是返回一个字符串数组:

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; } 
}