当前位置: 首页 > 知识库问答 >
问题:

使用 Json.net 和网络 API

易奇希
2023-03-14

经过一番争论之后,我终于让我的Json结果在我的web api中为具有关联的类正常工作了:

    public string GetAll()
    {
        var order =_repository.GetAll();
        var settings = new JsonSerializerSettings
               {
                   ReferenceLoopHandling = ReferenceLoopHandling.Ignore
               };

        return JsonConvert.SerializeObject(order, settings);

    }

但是当我在浏览器中或小提琴手中进行测试时,而不是像下面这样典型的东西:

(一)

     "Books":
        [  
           {    
             "Id": "1",  
             "Name": "Book1", 
             "Authors": 
                [
                  { 
                    ....... 
                  }
               ]  
           } 
       ] 

(B)我明白了:

"[{\"Id\":1,\ "姓名\":\"Book1\ ",\ "作者\":[{\"Id\":1,\"PersonId\":1,\"Person\":null,\"Books\":[{\"Id\":3,\ "姓名\":\"Book3\ ",\ "作者\":[{\"Id\":4,\"PersonId\":4,\"Person\":null,\"Books\":[{\"Id\":2,\ "姓名\":\"Book2\ ",\ "作者\":[{\"Id\":2,\"PersonId\ "。.....

有人能告诉我怎样才能把它格式化成上面的A吗?

谢谢

更新:

顺便说一句,html" target="_blank">格式化。缩进使情况变得更糟:

“[\r\n{\r\n \”Id\“:1,\r\n \”Name\“:\”Book1\“,\r\n \“Authors\”:[\r\n{\r\n \”Id“:1、\r\n \”PersonId\“:1,\r\n \\”Person\“:{\r\n \“Id\”:1,\r\n\r\n \”FirstName\“:\”John\“,\r\n \LastName\”:\“Doe\”\r\n},\r\n”\“书籍\”:[\r\n{\r\n \“Id\”:3,\r\n \“名称\”:\“Book3 \”,\r\n \”作者\“:[\r\n\r\n{\r\n \”Id\“:4,\r\n\r\n”个人\“:{\r\n\r\n \”Id“:4、\r\n \”名字\“:\”朱莉\“,\r\n

共有3个答案

宓跃
2023-03-14

我认为这里的问题是JSON被序列化了两次,一次由您序列化,另一次由WebAPI序列化。删除序列化,一切都应该正常。

左丘楷
2023-03-14

设置。格式化=格式化。缩进;

只是好奇...您使用 JsonMediaType 格式化程序来处理编写响应的任何原因?...我看到你正在将其显式序列化为json...

鱼锦
2023-03-14

传统的方法是,API控制器返回HttpResponseMessage或集合对象,但不返回已经序列化的对象。MediaTypeFormatter对象将为您解决这一问题。

看起来正在发生的事情是,您的控制器正在返回一个字符串,然后将其转换为JSON表示形式(因为JSON的媒体类型格式化程序)。尝试更改控制器以仅返回对象集合(不将其序列化为字符串),它应该适合您。

 类似资料:
  • Docker 允许通过外部访问容器或容器互联的方式来提供网络服务。

  • 1、外部访问容器 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。 当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。 使用 docker ps 可以看到,本地主机的 49155 被映射到了容器的 5000 端口。此时访问本机的 49155 端口即可访问容器内 web 应用提供的界面。

  • 18.9.1 模板: 制作、解析并使模板生效: var strTempl = template.Must(template.New("TName").Parse(strTemplateHTML)) 在网页应用中使用HTML过滤器过滤HTML特殊字符: {{html .}} 或者通过一个字段 FieldName {{ .FieldName |html }} 使用缓存模板(参考章节15.7)

  • 问题内容: 我自己构建了一个JObject,并希望将其作为ActionResult返回。我不想创建然后序列化数据对象 例如 问题答案: 您应该只可以在操作方法中执行此操作:

  • 我有一个 docker 容器,我想给它 --network=host AND -。我需要连接到主机网络才能将主机数据狗服务器 (UDP) 和 网络用于其数据库。 尝试添加这两个网络会导致。 知道正确的处理方法吗?

  • 问题内容: 我一直在尝试使用Python创建一个简单的程序,该程序使用OpenCV从我的网络摄像头获取视频供稿并将其显示在屏幕上。 我知道我之所以在这里,是因为创建了窗口,并且网络摄像头上的灯闪烁了,但是它似乎在窗口中什么都没有显示。希望有人可以解释我在做什么错。 在不相关的注释上,我注意到我的网络摄像头有时会在中更改其索引号,有时我需要输入0、1或2,即使我只连接了一个摄像头,也没有拔下插头(我