Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Web API响应XML/JSON而不是字符串_C#_Json_Xml_Api - Fatal编程技术网

C# Web API响应XML/JSON而不是字符串

C# Web API响应XML/JSON而不是字符串,c#,json,xml,api,C#,Json,Xml,Api,我正在尝试创建一个web API。我遇到的问题是,我使用的是字符串而不是更好的格式响应,因此使用API的应用程序可以更轻松地解析它 是否有方法返回格式更好的内容,如JSON或XML?我该怎么做? public string Get(string id) { XElement xelement = XElement.Load("C:/Users/potter/source/repos/library/lib/Controllers/books.xml");

我正在尝试创建一个web API。我遇到的问题是,我使用的是字符串而不是更好的格式响应,因此使用API的应用程序可以更轻松地解析它

是否有方法返回格式更好的内容,如JSON或XML?我该怎么做?

  public string Get(string id)
    {
        XElement xelement = XElement.Load("C:/Users/potter/source/repos/library/lib/Controllers/books.xml");
        var books = xelement.Elements("book").Where(x => x.Element("title").ToString().ToLower().Contains(id));
        foreach (XElement xEle in books)
        {          
            returnValue = returnValue + xEle.ToString();    
        }
        return returnValue;
    }
嗨,有几点-

  • 是否有方法返回格式更好的内容,如JSON或XML? 我该怎么做呢?

      public string Get(string id)
        {
            XElement xelement = XElement.Load("C:/Users/potter/source/repos/library/lib/Controllers/books.xml");
            var books = xelement.Elements("book").Where(x => x.Element("title").ToString().ToLower().Contains(id));
            foreach (XElement xEle in books)
            {          
                returnValue = returnValue + xEle.ToString();    
            }
            return returnValue;
        }
    
  • 从WebAPI的角度来看,如果对象是可序列化的,那么它将自动转换为格式良好的XML或JSON。因此,不要返回字符串,而是返回“books”,在本例中,它是IEnumerable,因此您不必担心格式问题

    您可能还必须同时看到以下讨论--

  • 您正试图根据书名获取特定书籍

  • 还需要建议而不是检查值而不是XmlElement,因此替换下面的行

    x => x.Element("title").ToString().ToLower().Contains(id)
    
    与-

    x => x.Element("title").Value.ToString().ToLower().Contains(id)
    
    因此,您将要编写的最后一个代码是针对特定书籍的列表-

     public IEnumerable<XElement> Get(string id)
            {
    
                XElement xelement = XElement.Load("C:/Users/potter/source/repos/library/lib/Controllers/books.xml");
                return xelement.Elements("book").Where(x => x.Element("title").Value.ToString().ToLower().Contains(id));
            }
    

    请检查这里的答案-什么是XML输入,什么是您期望的输出?XML输入是我的数据源,格式如下:现在我正试图以格式化格式而不是一堆单词的字符串来响应应用程序的特定书籍。这当然是我要找的!我还可以问一下视图端的代码是什么样的,以获得一个特定的元素,比如author?数据[“作者”]?从视图方面看,您计划如何调用API?Jquery-Ajax?Jquery-with-Ajax索引更新了我的答案,请看一看!