Ninja Framework 以自定义格式返回 JSON

Posted

技术标签:

【中文标题】Ninja Framework 以自定义格式返回 JSON【英文标题】:Ninja Framework Return JSON in custom format 【发布时间】:2014-09-14 14:55:50 【问题描述】:

我们如何在 NINJA FRAMEWORK 控制器中返回 JSON 时返回自定义格式的 JSON。

    return Results.json().render(MyPOJO);

我的POJO类

    @Entity
    public class MyPOJO 
       private String Name;
       private String Value;

       public String getName() 
           return Name;
       
       public void setName(String Name) 
           this.Name = Name;
       
       public String getValue() 
           return Value;
       
       public void setValue(String Value) 
           this.Value = Value;
       
  

当前 JSON 输出

  ["Name":"Person1", "Value":"Value1", "Name":"Person2", "Value":"Value2"]

自定义 JSON 输出(必需)

  ["1":"Person1", "2":"Value1", "1":"Person2", "2":"Value2"]

【问题讨论】:

你为什么需要这个? json [ 字符已经表明里面是一个数组,所以你只需要获取它的索引。另外,这样做会使您的 json 结果变成无效的 json 对象,这可能会在将来给您带来问题 亲爱的 Jorge,所需的输出是数据表 (www.datatables.net) 的标准 json 输入。此外,当我获取大量记录时,删除键并替换为索引大大减少了我的网络使用量。我也通过 jsonlint.com 验证了我的输出,格式正确有效。 对不起,我看错了你的 json 输出。我正在阅读"1":"Name":"Person1", "2":"Value":"Value1",好像“1”表示该数据的索引。是的,你是对的,这是一个有效的 Json 对象。在这种情况下,您需要做的是使用 ObjectMapper 并实现 CustomSerializer。由于 Ninja FrameWork 使用 Jackson。在这里查看:wiki.fasterxml.com/JacksonFeatureModules 看到这个帖子,也许它会有所帮助:***.com/questions/7161638/… 【参考方案1】:

Jorge 是对的 - Ninja 只是使用 Jackson 来序列化东西 - 您可以使用 Jackson 的所有优点来自定义实体的解析和呈现。

在您的情况下,解决方案很简单。像这样使用@JsonProperty:

@Entity
public class MyPOJO 
   private String Name;
   private String Value;

   @JsonProperty("1")
   public String getName() 
       return Name;
   
   public void setName(String Name) 
       this.Name = Name;
   

   @JsonProperty("2")
   public String getValue() 
       return Value;
   
   public void setValue(String Value) 
       this.Value = Value;
   

【讨论】:

以上是关于Ninja Framework 以自定义格式返回 JSON的主要内容,如果未能解决你的问题,请参考以下文章

从 QTime 继承以自定义时间格式

如何从 csv 文件中以自定义格式读取时间?

如何强制Python XlsxWriter以自定义格式写入单元格

如何以自定义格式加载带有时间戳的 CSV?

django rest framework自定义返回格式

如何以自定义漂亮的日志格式在每个新行上附加制表符?