๐Ÿ˜œ

์ญˆ๋‚˜์•„๋น  ๋ธ”๋กœ๊ทธ

JUNA
STUDIO

[C#][Json.Net] Using SelectToken/SelectTokens

๋ฐœํ–‰์ผ: Jan, 2025
์กฐํšŒ์ˆ˜: 84
๋‹จ์–ด์ˆ˜: 149

Table of Contents

Parsing JSON with JObject

When working with variable JSON structures in C#, or when you need to extract or modify specific data, it is often more efficient to use JObject along with the SelectToken and SelectTokens methods. These methods allow you to retrieve or manipulate specific JSON values without needing to define full-fledged C# classes for mapping.

Original reference: Newtonsoft JSON SelectToken Documentation


Using SelectToken

The SelectToken method returns a JToken using a string path to access child tokens. If the specified token is found, it returns the token; otherwise, it returns null. The path uses dot notation for properties and array indexes. For example: Manufacturers[0].Name.


JObject o = JObject.Parse(@"{
  'Stores': [
      'Lambton Quay',
      'Willis Street'
  ],
  'Manufacturers': [
      {
          'Name': 'Acme Co',
          'Products': [
              {
                  'Name': 'Anvil',
                  'Price': 50
              }
          ]
      },
      {
          'Name': 'Contoso',
          'Products': [
              {
                  'Name': 'Elbow Grease',
                  'Price': 99.95
              },
              {
                  'Name': 'Headlight Fluid',
                  'Price': 4
              }
          ]
      }
  ]
}");

string name = (string)o.SelectToken("Manufacturers[0].Name");
// Acme Co

decimal productPrice = (decimal)o.SelectToken("Manufacturers[0].Products[0].Price");
// 50

string productName = (string)o.SelectToken("Manufacturers[1].Products[0].Name");
// Elbow Grease

Using JSONPath with SelectToken

You can leverage JSONPath expressions to query tokens dynamically.


JToken acme = o.SelectToken("$.Manufacturers[?(@.Name == 'Acme Co')]");
Console.WriteLine(acme);
// { "Name": "Acme Co", Products: [{ "Name": "Anvil", "Price": 50 }] }

IEnumerable<JToken> pricyProducts = o.SelectTokens("$..Products[?(@.Price >= 50)].Name");

foreach (JToken item in pricyProducts)
{
  Console.WriteLine(item);
}
// Anvil
// Elbow Grease

Using SelectToken with LINQ

The SelectToken method can be combined with LINQ to filter and retrieve JSON data efficiently.


IList<string> storeNames = o.SelectToken("Stores").Select(s => (string)s).ToList();
// Lambton Quay
// Willis Street

IList<string> firstProductNames = o["Manufacturers"].Select(m => (string)m.SelectToken("Products[1].Name")).ToList();
// null
// Headlight Fluid

decimal totalPrice = o["Manufacturers"].Sum(m => (decimal)m.SelectToken("Products[0].Price"));
// 149.95
Tags: #C##JSON#JObject#SelectToken#SelectTokens#JSONPath#LINQ#Newtonsoft.Json#JSON Parsing#JSON Manipulation
JUNA BLOG VISITORS
Today
7
 (
updown
-7
)
Total
657
 (
updown
+7
)

ยฉ 2025 juniyunapapa@gmail.com.