簡體   English   中英

如何從文件中解析 JSON?

[英]how to parse a JSON from file?

我有一個基本問題,但我無法為 android 應用程序完成這項工作。 我有一個看起來像這樣的 JSON 文件:

{  
  "catches":[  
    {  
      "time":"Jan 14, 2021 10:40:04 PM",
      "amount":1,
      "condition":0.8
    },
    {  
      "time":"Jan 15, 2021 12:05:14 PM",
      "amount":"2",
      "condition":1.0
    },
    {  
      "time":"Jan 16, 2021 11:30:04 PM",
      "amount":"3",
      "condition":null
    }
  ]
}

如何從存儲在內部存儲器中的文件中解析 JSON 並將值分配給變量? 在 C# 我可以這樣做:

static void Main(string[] args)
        {
            string fPath = "C:/Temp/myJSON.json";
            using (StreamReader r = new StreamReader(fPath))
            {
                string json = r.ReadToEnd();
                Root el;
                el = JsonConvert.DeserializeObject<Root>(json);

                //variable which later would be used in for a TextView
                var lastRecord = el.catches[el.catches.Count - 1].time;
            } 
        }

但我不知道如何在 java 中制作這樣的東西。 謝謝。

您可以將文件內容作為字符串獲取:

fun getDataAsStringFromPath(path: String): String {
    val file = File(this.javaClass.classLoader?.getResource(path)?.path)

    return file.readText(Charset.defaultCharset())
  }

確保將此文件保存在res所在位置的resources目錄中。

我建議您查看 JSON 解析庫。 我推薦的是 Jackson。 將字符串解析為 object 非常容易。 首先,您創建一個數據 class。 在您的示例中,您將需要兩個:CacheItem 和 Container(如果您願意,請適當重命名)

class CacheItem {
    private String time;
    private Integer amount;
    private Double condition;
    
    // Getters and Setters
}

class Container {
    private List<CacheItem> caches;
    // Getter and Setter
}

現在,您要從文件中解析字符串,獲取 Object 映射器(請參閱 Jackson API 為此)並簡單地調用Container container = mapper.readValue(string, Container.class);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM