2017-02-28 15 views
1

ID2に等しい場合、CourseNameHistoryからGymに変更するにはどうすればよいですか?特定のプロパティを変更する

{ 
    "Result": { 
    "StudentInfo": { 
     "ID": 20, 
     "Name": "Bob", 
     "IgnoreThis": [ 
     { 
      "ID": 123, 
      "Something":"abc" 
     } 
     ] 
    }, 
    "Courses": [ 
     { 
     "ID": 1, 
     "CourseName":"Math" 
     }, 
     { 
     "ID": 2, 
     "CourseName":"History" 
     } 
    ] 
    } 
} 

以下このコードは、私が考えていたかを示すための単なる幻想コードです:

{ "Result":{ "Course" : [ if id=2 inside "Courses" then "CourseName":"Gym" ] }} 

私はPostmanを使用することになります。

+1

どのようなプログラミング言語を使用していますか? –

+0

@JonathanPortorreal C#、私は私のプロジェクトでC#でこれを解決する前に、郵便配達のアプリケーションのJSONだけでこれを達成しようとしました。 – ipid

+0

これにはJson.NETを使用してください –

答えて

0

ここでは機能する解決策があります(それはおそらく整理される可能性があります)。ただし、Newtonsoft.Json(よく知られているナゲットパッケージ)を使用します。

using System.Linq; 
using Newtonsoft.Json; 
using Newtonsoft.Json.Linq; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string blah = "{'Result': { 'StudentInfo': { 'ID': 20, 'Name': 'Bob', 'IgnoreThis': [{'ID': 123,'Something':'abc'}]}, 'Courses': [{'ID': 1,'CourseName':'Math'},{'ID': 2,'CourseName':'History'}]}}"; 

      dynamic json = JsonConvert.DeserializeObject(blah); 
      var dynamicJson = json.Result.Courses; // included to show how dynamic could be accessed instead 

      JObject arr = json; 

      foreach (var course in arr["Result"]["Courses"].Where(x => x["ID"].Value<int>() == 2)) 
      { 
       course["CourseName"] = "Gym"; 
      } 

      var newResult = json.ToString(); 
     } 
    } 
} 
関連する問題