【发布时间】:2014-06-14 05:16:50
【问题描述】:
我创建了一个 WCF 类库,其中包含一个名为 SampleJSON(string name) 的函数。
运营合同是这样的:
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, UriTemplate = "sample/{name}")]
string SampleJSON(string name);
我打算从函数 SampleJSON() 返回有效的 JSON 输出,返回部分是这样的:
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
sw.Write("{");
sw.Write("\"" + "firstname" + "\"" + ":");
sw.Write("\"" + "samplefirstname" + "\"" + ",");
sw.Write("\"" + "lastname" + "\"" + ":");
sw.Write("\"" + "samplelastname" + "\"" + "}");
sw.Flush();
sw.Close();
return sb.ToString();
我的服务创建的输出是这样的:
"{\"firtsname\":\"samplefirstname\",\"lastname\":\"samplelastname\"}"
这显然是无效的。
我也尝试过使用 Newton.JSON 。但我仍然有问题。
我想我需要返回一个 JSONObject 而不是字符串,但我不知道该怎么做,而且 Newton.JSON 的文档对我没有帮助。
如何生成最终创建有效 JSON 输出的 JSONObject,最好使用 Newton.JSON。
[编辑] 这是我正在使用的新代码和浏览器上的结果:
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
JsonTextWriter writer = new JsonTextWriter(sw);
writer.WriteStartObject();
writer.WritePropertyName("insertresult");
writer.WriteValue(resultArray[0]);
writer.WritePropertyName("insertmessage");
writer.WriteValue(resultArray[1]);
writer.WritePropertyName("sendsmsresult");
writer.WriteValue(resultArray[2]);
writer.WritePropertyName("sendsmsmessage");
writer.WriteValue(resultArray[3]);
writer.WriteEndObject();
writer.Flush();
sw.Flush();
return sb.ToString();
浏览器上的结果:
"{\"insertresult\":\"false\",\"insertmessage\":\"already existed\",\"sendsmsresult\":\"false\",\"sendsmsmessage\":\"noId\"}"
如您所见,此 json 无效。
这个 json 将被一个 android 应用程序使用。 我的问题是: android 应用看到我在此处看到的内容,还是看到有效格式?
【问题讨论】: