如何将 C# 代码转换为 Kotlin 由 Json 库组成

Posted

技术标签:

【中文标题】如何将 C# 代码转换为 Kotlin 由 Json 库组成【英文标题】:how to convert C# code to Kotlin consist of Json library 【发布时间】:2020-12-12 02:23:17 【问题描述】:

我是 kotlin 新手,英语不好抱歉。

我想把下面的代码转换成 Kotlin。

但我在 kotlin 中找不到与 [JsonExtensiondata] 匹配的代码。

public class ProofAttribute

    [JsonProperty("raw")]
    public string Raw  get; set; 

    /// <summary>
    /// ignore structural mapping of other properties
    /// </summary>
    [JsonExtensionData]
    public IDictionary<string, JToken> Rest  get; set; 
 

【问题讨论】:

【参考方案1】:

您可以使用 Jackson 库进行序列化/反序列化。如果您选择这样做,请使用此处文档中描述的 @JsonAnyGetter 注释:https://github.com/FasterXML/jackson-annotations/wiki/Jackson-Annotations

@JsonAnyGetter:用于将getter定义为“任何getter”的注释,它返回一个java.util.Map,其内容将被序列化为JSON Object的附加属性,以及Object可能具有的常规属性.

查看示例:

class Student 
   private Map<String, String> properties;
   public Student()
      properties = new HashMap<>();
   
   @JsonAnyGetter
   public Map<String, String> getProperties()
      return properties;
   
   public void add(String property, String value)
      properties.put(property, value);
   

HashMap 相当于具有相似检索时间和复杂性的字典。

Kotlin 定义:

@get:JsonAnyGetter
val details: Map<String, JsonNode>

【讨论】:

我还有一个问题。 Idictionary 可以转换成 kotlin 吗? Map 是等效接口。 kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map 对不起,你是对的。查看***.com/questions/50750036/… 获取 kotlin 使用示例。 数据类 ProofAttribute(@JsonProperty("raw") var Raw: String, @get:JsonAnyGetter var Rest:Map =LinkedHashMap() )

以上是关于如何将 C# 代码转换为 Kotlin 由 Json 库组成的主要内容,如果未能解决你的问题,请参考以下文章

如何将此 Java 代码转换为 kotlin 代码

如何将Long值转换为日期时间并将当前时间转换为Long kotlin?

如何使用内容协商将 json 转换为 ktor 中的 kotlin 对象?

如何将 Int 转换为 ByteArray,然后使用 Kotlin 将其转换回 Int?

如何在 Kotlin 中将字符串数组 JSON 转换为 ArrayList?

如何将改造回调响应中的回调从 java 转换为 Kotlin