vinodh muthusamy Ответов: 1

Как вернуть результат JSON из службы WCF


Я создал сервис WCF, мне нужно вернуть результат JSON, но я вернул список<string>. Пожалуйста, помогите мне решить эту проблему, чтобы вернуть результат JSON.

//IService.cs
namespace GenerateService
{
    [ServiceContract]
    public interface IService1
    {
         [OperationContract]
         List<string[]> AutoGenerate(string Content, int count);
    }
}



//Service1.cs

public class Service1 : IService1
    {
        public string datatypeval;

        public List<string[]> AutoGenerate(string Content, int count)
        {
            DataSet alRes = new DataSet();
            //string FieldValue;
            List<string[]> Getdetails = new List<string[]>();

            string sval;
            int s = 1; string[] Columns = Content.Split(',').Select(sValue => sValue.Trim()).ToArray();
            foreach (var item in Columns)
            {
                datatypeval += "'" + item + "'" + ",";
            }
            string FieldNames1 = "SELECT SUBSTRING((SELECT ',' + CAST(FId AS VARCHAR) FROM tbl_fieldname where DataTypeName in(" + datatypeval.Remove(datatypeval.Length - 1) + ")FOR XML PATH('')), 2,10000) AS FID";
            alRes = DAL.DBL.returnDataset(FieldNames1);
            string FieldNames = alRes.Tables[0].Rows[0]["FID"].ToString();
            string[] FieldID = FieldNames.Split(',').Select(sValue => sValue.Trim()).ToArray();
            for (int e = 0; e < Columns.Count(); e++)
            {
                //FieldValue = "";
                string qryGetFieldNames = "SELECT TOP (" + count + ")TD1.FID,TD1.Value,TFN.DataTypeName FROM tbl_Data1 TD1 INNER JOIN tbl_FieldName TFN ON TD1.FID=TFN.FID WHERE TD1.FId in (" + FieldID[e] + ") ORDER BY NEWID()";
                alRes = DAL.DBL.returnDataset(qryGetFieldNames);

                for (int i = 0; i < alRes.Tables[0].Rows.Count; i++)
                {
                    // FieldValue += Columns[e] + "::" + alRes.Tables[0].Rows[i]["Value"].ToString() + "~";

                    if (FieldID[e] == alRes.Tables[0].Rows[i]["FID"].ToString())
                    {
                        string[] Checkvalue = new string[FieldID.Length];
                        if (e != 0)
                        {
                            Checkvalue = Getdetails[i];
                        }
                        Checkvalue[e] = alRes.Tables[0].Rows[i]["Value"].ToString();
                        if (e == 0)
                        {
                            Getdetails.Add(Checkvalue);
                        }
                        else
                        {
                            Getdetails[i] = Checkvalue;
                        }
                    }
                }
                s++;
            }
            return Getdetails;
        }
    }


Что я уже пробовал:

public class Service1 : IService1
    {
        public string datatypeval;

        public List<string[]> AutoGenerate(string Content, int count)
        {
            DataSet alRes = new DataSet();
            //string FieldValue;
            List<string[]> Getdetails = new List<string[]>();

            string sval;
            int s = 1; string[] Columns = Content.Split(',').Select(sValue => sValue.Trim()).ToArray();
            foreach (var item in Columns)
            {
                datatypeval += "'" + item + "'" + ",";
            }
            string FieldNames1 = "SELECT SUBSTRING((SELECT ',' + CAST(FId AS VARCHAR) FROM tbl_fieldname where DataTypeName in(" + datatypeval.Remove(datatypeval.Length - 1) + ")FOR XML PATH('')), 2,10000) AS FID";
            alRes = DAL.DBL.returnDataset(FieldNames1);
            string FieldNames = alRes.Tables[0].Rows[0]["FID"].ToString();
            string[] FieldID = FieldNames.Split(',').Select(sValue => sValue.Trim()).ToArray();
            for (int e = 0; e < Columns.Count(); e++)
            {
                //FieldValue = "";
                string qryGetFieldNames = "SELECT TOP (" + count + ")TD1.FID,TD1.Value,TFN.DataTypeName FROM tbl_Data1 TD1 INNER JOIN tbl_FieldName TFN ON TD1.FID=TFN.FID WHERE TD1.FId in (" + FieldID[e] + ") ORDER BY NEWID()";
                alRes = DAL.DBL.returnDataset(qryGetFieldNames);

                for (int i = 0; i < alRes.Tables[0].Rows.Count; i++)
                {
                    // FieldValue += Columns[e] + "::" + alRes.Tables[0].Rows[i]["Value"].ToString() + "~";

                    if (FieldID[e] == alRes.Tables[0].Rows[i]["FID"].ToString())
                    {
                        string[] Checkvalue = new string[FieldID.Length];
                        if (e != 0)
                        {
                            Checkvalue = Getdetails[i];
                        }
                        Checkvalue[e] = alRes.Tables[0].Rows[i]["Value"].ToString();
                        if (e == 0)
                        {
                            Getdetails.Add(Checkvalue);
                        }
                        else
                        {
                            Getdetails[i] = Checkvalue;
                        }
                    }
                }
                s++;
            }
            return Getdetails;
        }
    }

1 Ответов

Рейтинг:
9

Nirav Prabtani

Определите такой формат ответа в интерфейсе

[OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json)]
List<string[]> AutoGenerate(string Content, int count);


Вы можете генерировать классы в соответствии со своей структурой ответа, и вы должны возвращать эти классы соответственно.

Дайте мне знать, если у вас есть какие-либо вопросы или опасения.


vinodh muthusamy

Я создал вышеописанный код в интерфейсе,

какие изменения я должен внести в Services1.svc.cs для результата JSON

Nirav Prabtani

Сначала проверьте свой ответ, не так ли это json ?

vinodh muthusamy

Как проверить, возвращает ли он Json или нет.

Я думаю, что я получаю как формат XMl

Nirav Prabtani

проверьте свой ответ на веб-сайте jsonlint

vinodh muthusamy

Он возвращается только в формате XML