'How to extract data from JSON array

I know its an array, but I am completely new to JSON and need help comprehending how this is structured, here is my attempt at extracting data:

String JSonString = readURL("//my URL is here");
JSONArray s = JSONArray.fromObject(JSonString);
JSONObject Data =(JSONObject)(s.getJSONObject(0));
System.out.println(Data.get("RecycleSiteUrl"));

I want to extract RecycleSiteUrl based on SiteId

My JSON data that I have goes like this :

 [
    {
    "SiteId": 1,
    "RecycleLogoUrl": "https://static-contrado.s3-eu-west- 1.amazonaws.com/cms/recyclecarelabel/d867c499-abc0-4ade-bc1a-f5011032c3e0132901511939451201.jpeg",
    "RecycleSiteUrl": "bagsoflove.co.uk/recycling",
    "Culture": "en-GB"
    },
    {
    "SiteId": 10,
    "RecycleLogoUrl": "https://static-contrado.s3-eu-west-1.amazonaws.com/cms/recyclecarelabel/95d28588-33e3-420c-8b24-4a8095c0f6ac132901511364264751.jpeg",
    "RecycleSiteUrl": "contrado.co.uk/recycling",
    "Culture": "en-GB"
    }]

I dont really have a strong grasp of this stuff so all the help is appreciated.



Solution 1:[1]

you can try this, it doesn't need to create any classes

var jsonParsed=JArray.Parse(json);
var siteId=10;
    
var recycleSiteUrl  = GetRecycleSiteUrl(jsonParsed,siteId); // contrado.co.uk/recycling

public string GetRecycleSiteUrl(JArray jArray, int siteId)
{
    return jArray.Where(x=> (string) x["SiteId"] == siteId.ToString()).First()["RecycleSiteUrl"].ToString();
}

or using json path

string recycleSiteUrl= (string)jsonParsed
.SelectToken("$[?(@.SiteId=="+siteId.ToString()+")].RecycleSiteUrl");

Solution 2:[2]

using Newtonsoft.Json;  
using System.Linq;  

public void Method()
{
   var yourSearchParameter = 10;
   string jsonStr = readURL("//my URL is here");
   var obj = JsonConvert.DeserializeObject<List<RecycleSite>>(jsonStr);
   var siteUrl = obj.SingleOrDefault(q => q.SiteId == yourSearchParameter).RecycleSiteUrl;
 /* Do something with the siteUrl  */
}

public class RecycleSite
{
   public int SiteId { get; set; }
   public string RecycleLogoUrl { get; set; }
   public string RecycleSiteUrl { get; set; }
   public string Culture{ get; set; }
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2