1

私はここに来る前に多くの調査を行いましたが、「解決策」のどれも私が望んでいたものを与えてくれなかったので、ここに投稿しています.

ASP.NET C# を使用しています。

現在、xml の代わりに JSON 文字列を返すようにしようとしている Web サービスがあります。

サービスの 1 つの方法を次に示します。

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public String SelectHrana(String ime)
    {
        //HttpResponse response = client.execute(httpGet);
        DataSet ds = new DataSet();

        SqlConnection con = new SqlConnection(cnnstring);
        con.Open();
        String pom = "select * from Food where Name like ('%' + @Ime + '%')";
        SqlCommand cmd = new SqlCommand(pom, con);
        cmd.Parameters.AddWithValue("@Ime", ime);
        cmd.ExecuteNonQuery();

        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(ds);
        con.Close();

        return JsonConvert.SerializeObject(ds, Newtonsoft.Json.Formatting.Indented);

    }

これは以下を返します。

<string xmlns="http://tempuri.org/"> { "Table": [ { "ID": 1, "Name": "boiled egg", "Calories": 155 }, { "ID": 2, "Name": "strawberry", "Calories": 33 } ] } </string>

<string xmlns="http://tempuri.org/">先頭と</string>末尾のを取り除く方法を誰か教えてもらえますか?

ありがとうございました。

4

1 に答える 1

0

すべての「専門家」が「簡単」と言っているにもかかわらず、WCF プロジェクトまたは ASMX から純粋な JSON を返す良い方法が見つかりませんでした。プロジェクト (ASPX) に Web ページを追加します。 Web サービス JSON からのオブジェクト。

以下を使用して:

JavaScriptSerializer serializer = new JavaScriptSerializer();
String myJSON= serializer.Serialize(<your object>);

そして、「myJSON」は JSON を保持します。

JavaScriptSerializer は DataTable\DataSet を処理できないため、できることは、DataSet を DataTable に挿入し、次のメソッドを使用して JSON (文字列) に変換することです。

 public static string GetDataTableToJSONString(DataTable table)
        {

            List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();

            foreach (DataRow row in table.Rows)
            {
                Dictionary<string, object> dict = new Dictionary<string, object>();

                foreach (DataColumn col in table.Columns)
                {
                    dict[col.ColumnName] = row[col];
                }
                list.Add(dict);
            }
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            return serializer.Serialize(list);
        }

//JSONP を返すには また、JSONP 形式で返す必要がある場合もあるため、Request パラメータを使用し、存在する場合は、対象のページの Page_Load メソッドの最後で JSON のラッパーとして使用しますクライアント:

 String callBack = Request["callback"];
 if (callBack != null)
            {

                Response.Write(callBack + "(" + GetDataTableToJSONString(GetDiamonds(paramList)) + ")");
            }
            else
                Response.Write(GetDataTableToJSONString(GetDiamonds(paramList)));
于 2013-11-07T10:32:13.460 に答える