2016-08-25 4 views
1

私はjson.netC#でJSONファイルにクエリを作成する方法

を使用しています、私は私のC#プロジェクトで私のJSONファイルを編集する必要がありますが、私はいくつかのproblems.Moreoverを得た

私のJSONファイルdeathGod.json:

{ 
    "toKillList": [ 
    { 
     "Name": "John", 
     "dieWith": "eat hot dog", 
     "Date": "date", 
     "State": "state" 
    }, 
    { 
     "Name": "peter", 
     "dieWith": "swim", 
     "Date": "date", 
     "State": "state" 
    } 
    ] 
} 

私のコーディング:

string path = @"\users\deathGod\documents\visual studio 2012\Projects\killApp\killApp\deathGod.json"; 
string jsonData = File.ReadAllText(path); 

dynamic result = JsonConvert.DeserializeObject(jsonData); 
JArray items = (JArray)result["toKillList"]; 

問題:

JArrayにクエリを追加し、JarrayにJObjectを追加する必要があります。ただし、引用符と改行はkill my fileです。

コード:

string element = @"{'Name':’may’, 
        ‘Path’:’driving’, 
        ‘Date’:’date’, 
        ‘State’:’state’}"; 

JValue value = new JValue(element); 
items .Add(value); 
//JArray => JObject => json file 

結果:

{ 
    "toKillList": [ 
     { 
      "Name": "John", 
      "dieWith": "eat hot dog", 
      "Date": "date", 
      "State": "state" 
     }, 
     { 
      "Name": "peter", 
      "dieWith": "swim", 
      "Date": "date", 
      "State": "state" 
    }, 
    "{'Name':’may’, \r\n‘Path’:’driving’,\r\n ‘Date’:’date’,\r\n ‘State’:’state’\r\n}" 
    ] 
} 

任意のアイデア?

+0

変更すべての ''「''に」にも 'items'や活用匿名型に –

+0

を追加する前にデシリアライズしませしようと試み@を使用しますがエスケープを使用しますか? "\ r \ n"のような文字列要素= "{\" Name \ ":\" may \ "...と使用しないでくださいが、 ' – Lorenzo

+0

@AlekseyLを使用しますか? 、 "\ r \ n"ではありません。 –

答えて

1

あなたはJObjectなくJValue構築する必要があります:あなたは、まず'を置き換えるJSONに文字列を変換したい場合は

var element = JObject.FromObject(new 
{ 
    Name = "may", 
    Path = "driving", 
    Date = "date", 
    State = "state" 
}); 
items.Add(element); 
+0

私は余分な質問にお答えできますか?JArrayのアイテム名を取得するにはどうすればいいですか? "]'? ' –

+0

これを解決するには、最初にforループ内のJObjectにJArray項目を変更し、' obj ["Name"] 'を使用して" May "を取得します –

+0

btw、強く型付けされたオブジェクトを扱う方がはるかに便利です –

0

を。その後、次のコードを使用します

var element = @"{'Name':'may','Path':'driving', 'Date':'date', 'State':'state'}"; 

var value = (JToken)JsonConvert.DeserializeObject(element); 
items.Add(value); 

var res = JsonConvert.SerializeObject(result); 

最終的な結果は次のとおりです、

{ 
    "toKillList":[ 
    {"Name":"John","dieWith":"eat hot dog","Date":"date","State":"state"}, 
    {"Name":"peter","dieWith":"swim","Date":"date","State":"state"}, 
    {"Name":"may","Path":"driving","Date":"date","State":"state"} 
    ] 
} 
関連する問題