質問のコメントで言った JSON として正しいかはちょっと置いといて・・・
endbeatが含まれているのかを判断する方法はありますでしょうか?
String.Contains メソッドを使ってはいかがですか? 具体的には以下の記事を見てください。
文字列に特定の文字列が含まれているかを調べるには?(Contains編)
https://atmarkit.itmedia.co.jp/ait/spv/0602/17/news119.html
他に、上の記事にも書いてありますが、IndexOf メソッドを使うという手もあります。
それなら文字列が JSON として正しいか否かに関わらずチェックできます。
上記ではダメで、デシリアライズしてから調べるとかの話であれば、JSON として正しい文字列のサンプルを書いてください。
【追記】
上の質問のコメント欄の 2022/08/15 15:07 の私のコメントで、
{"note":[{"beat":[24,0,4],"block":1},
{"beat":[103,0,2],"endbeat":[104,0,2],"block":3},{"beat":[205,0,4],"block":4}]}
上記をベースに C# のクラス定義を作成し、そのオブジェクトにデシリアライズする方法を回答欄に追記しておきます。
・・・と書いた件です。.NET Framework 4.8 のコンソールアプリを使って例を書きます。
まず、上の JSON 文字列をベースに、C# のオブジェクトのクラス定義を作成します。それには以下の記事に書いたように Visual Studio を利用できます。
JSON 文字列から C# のクラス定義生成
http://surferonwww.info/BlogEngine/post/2020/05/10/generate-class-definition-from-json-string.aspx
上の記事に書いてあるようにして JSON 文字列から C# のクラス定義を作成すると以下の通りとなります。
public class Rootobject
{
public Note[] note { get; set; }
}
public class Note
{
public int[] beat { get; set; }
public int block { get; set; }
public int[] endbeat { get; set; }
}
.NET Framework での定番の Newtonsoft.Json と System.Text.Json を使って、上の JSON 文字列を Rootobject クラスのオブジェクトにデシリアライズしてみます。
using Newtonsoft.Json;
using System;
namespace ConsoleAppJson
{
internal class Program
{
static void Main(string[] args)
{
var jsonString = @"{""note"":[
{""beat"":[24,0,4],""block"":1},
{ ""beat"":[103,0,2],""endbeat"":[104,0,2],""block"":3},
{ ""beat"":[205,0,4],""block"":4}
]}";
// Newtonsoft.Json
var result1 = JsonConvert.DeserializeObject<Rootobject>(jsonString);
// System.Text.Json
var result2 = System.Text.Json.JsonSerializer.Deserialize<Rootobject>(jsonString);
Console.Read();
}
}
}
結果は以下のようになります。デバッガで途中で実行を止めて Newtonsoft.Json でのデシリアライズ結果 result1 の結果を見たものです。System.Text.Json のデシリアライズ結果 result2 も同じになります。JSON 文字列に "endbeat" が存在する場合はその内容が、存在しない場合は null になっているとことに注目してください。
Unity でよく使われているという JsonUtility でも同じ結果になると思います。