Выход WCF JSON получает нежелательные котировки и обратные косые черты

Хорошо, поэтому я смущен тем, почему строка, которую я создаю, "волшебно" добавила в нее добавочные символы.

Прежде всего, я увидел обратные косые черты, появляющиеся в ближайшем окне:

"[{\"ID\":\"1\",\"F1\":\"lala\",\"F2\":\"hehe\"},{\"ID\":\"2\",\"F1\":\"abc\",\"F2\":\"def\"}]"

Но после прочтения в Google, что это только "визуальные" и фактически не существуют в самом значении переменной, я попробовал текст Visualizer:

[{"ID":"1","F1":"lala","F2":"hehe"},{"ID":"2","F1":"abc","F2":"def"}]

.. так хорошо, их там нет:)

Затем я перехожу к веб-сервису браузера Chrome:

{"JSONsampleResult":"[{\"ID\":\"1\",\"F1\":\"lala\",\"F2\":\"hehe\"},{\"ID\":\"2\",\"F1\":\"abc\",\"F2\":\"def\"}]"}

Таким образом, здесь не только обратная косая черта, но также добавлены кавычки вокруг квадратных скобок!?

Пожалуйста, пожалуйста, пожалуйста, может кто-нибудь объяснить, почему я не могу разобрать простую строку? Что добавляет все эти дополнения?

ServiceRestTable.svc(извлечение)

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace netshedWebService_2
{
     public class ServiceRestTable : IServiceRestTable
    {
        private static long EpochTicks = new DateTime(1970, 1, 1).Ticks;

        string ConString = ConfigurationManager.ConnectionStrings["netshedConnectionString"].ConnectionString;
        SqlConnection con;
        SqlCommand cmd;
        SqlDataAdapter sda;
        DataTable dt;
        Sample emp = new Sample();

        public String JSONsample(string p_str)
        {
            string myList;
            using (con = new SqlConnection(ConString))
            {
                cmd = new SqlCommand("SELECT ID, F1, F2 FROM ADT.Test", con);
                sda = new SqlDataAdapter(cmd);
                dt = new DataTable("Paging");
                sda.Fill(dt);
                emp.SampleTable = dt;
                myList = FromDataTable(emp.SampleTable);
                return myList;
            }
        }

IServiceRestTable.cs

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace netshedWebService_2
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IRestServiceImpl" in both code and config file together.
    [ServiceContract]
    public interface IServiceRestTable
    {
        [OperationContract]
        [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Xml,
            BodyStyle = WebMessageBodyStyle.Wrapped,
            UriTemplate = "xml/{id}")]
        Sample XMLsample(string id);

        [OperationContract]
        [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.Wrapped,
            UriTemplate = "json/{id}")]
        String JSONsample(string id);
    }
    [DataContract]
    public class Sample
    {
        [DataMember]
        public DataTable SampleTable
        {
            get;
            set;
        }
    }
}

Web.config

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <add name="netshedConnectionString" connectionString="xxxxx"/>
  </connectionStrings>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="netshedWebService_2.ServiceRestTable" behaviorConfiguration ="RestServiceBehaviour">
        <endpoint address="" binding="webHttpBinding" contract="netshedWebService_2.IServiceRestTable" behaviorConfiguration="web">
        </endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="RestServiceBehaviour">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="web">
            <webHttp/>
        </behavior>
      </endpointBehaviors>      
    </behaviors>    
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <directoryBrowse enabled="true"/>
  </system.webServer>
</configuration>

Ответы