【问题标题】:How to exclude xml from json如何从 json 中排除 xml
【发布时间】:2013-03-16 12:06:02
【问题描述】:

我正在使用以下代码通过 Web 服务检索 json 格式的数据 但是以 XML 和 json 格式获得结果。下面是代码

[WebMethod(Description = "Get Employees")]
    public string getEmployees()
    {

        //List<employee> l=new List<employee>();
        //l.Add(new employee{ID=1,name="sreekanth"});
        //l.Add(new employee{ID=2,name="pradeep"});
        //l.Add(new employee{ID=3,name="swaroop"});
        //l.Add(new employee{ID=4,name="nagman"});
        //l.Add(new employee{ID=5,name="chethan"});
        //return l;
        DataTable table = new DataTable();
        table.Columns.Add("userid");
        table.Columns.Add("phone");
        table.Columns.Add("email");


        table.Rows.Add(new[] { "1", "9999999", "test@test.com" });
        table.Rows.Add(new[] { "2", "1234567", "foo@test.com" });
        table.Rows.Add(new[] { "3", "7654321", "bar@test.com" });

        var query = from row in table.AsEnumerable()
                    select new
                    {
                        userid = (string)row["userid"],
                        phone = (string)row["phone"],
                        email = (string)row["email"]
                    };

        JObject o = JObject.FromObject(new
        {
            Table = query
        });
        string result = JsonConvert.SerializeObject(o);
        //Console.WriteLine(o);

        return result  ;

    }

下面是我得到的输出...

 <?xml version="1.0" encoding="utf-8" ?> 
<string xmlns="http://tempuri.org/">{"Table":            [{"userid":"1","phone":"9999999","email":"test@test.com"},{"userid":"2","phone":"1234567","email":"foo@test.com"},{"userid":"3","phone":"7654321","email":"bar@test.com"}]}</string> 

我只想要 Json 中的结果

【问题讨论】:

  • 你为什么使用 DataTable 而不是 List?
  • Web 服务本质上是基于 XML 的。您可以将您的服务更改为 RESTful 服务,它可以通过 HTTP 返回您喜欢的任何内容。查看这个类似的问题和答案:stackoverflow.com/questions/8205081/… - 注意代码中的 ScriptMethod 属性。
  • Kevin Brydon 请让我知道如果我使用列表可以解决这个问题吗??

标签: c# xml json.net


【解决方案1】:

使用ScriptMethod 属性并将ResponseFormat 设置为ResponseFormat.Json

[WebMethod(Description = "Get Employees")]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string getEmployees()

此外,您的班级必须使用[ScriptService] 属性进行标记。

【讨论】:

  • 他还必须为 application/json 使用适当的内容类型标头来调用它
  • 大卫,我已经完成了上述工作。但仍然得到相同的输出
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
  • 2014-05-15
  • 2012-04-27
  • 1970-01-01
  • 2020-06-17
相关资源
最近更新 更多