2016-12-30 85 views
1

我已經成功攔截IIS7/ASP.NET應用程序中的HTTP Web請求,並使用HttpModule我檢測到內容類型爲「application/json charset = UTF-8」。我使用Proxy tool來確定JSON內容的樣子。如何修改C#中的JSON內容?

我正在使用HttpModule攔截此Web請求,我想修改JSON內容。

我的問題是:如何將JSON內容提取到JSON對象中,對其進行修改,並使用我的更改更新原始Web請求?

例如,假設JSON內容看起來像

{ 
    "glossary": { 
     "title": "example glossary", 
     "GlossDiv": { 
      "title": "S", 
      "GlossList": { 
       "GlossEntry": { 
        "ID": "SGML", 
        "SortAs": "SGML", 
        "GlossTerm": "Standard Generalized Markup Language", 
        "Acronym": "SGML", 
        "Abbrev": "ISO 8879:1986", 
        "GlossDef": { 
         "para": "A meta-markup language, used to create markup languages such as DocBook.", 
         "GlossSeeAlso": ["GML", "XML"] 
        }, 
        "GlossSee": "markup" 
       } 
      } 
     } 
    } 
} 

然後,我想做的事是:

{ 
    "glossary": { 
     "title": "example glossary", 
     "GlossDiv": { 
      "title": "S", 
      "GlossList": { 
       "GlossEntry": { 
        "ID": "C H A N G E 1", 
        "SortAs": "C H A N G E 2", 
        "GlossTerm": "Standard Generalized Markup Language", 
        "Acronym": "SGML", 
        "Abbrev": "ISO 8879:1986", 
        "GlossDef": { 
         "para": "A meta-markup language, used to create markup languages such as DocBook.", 
         "GlossSeeAlso": ["AAA", "BBB", "CCC"] 
        }, 
        "GlossSee": "markup" 
       } 
      } 
     } 
    } 
} 

我使用C#代碼來實現的HttpModule。

回答

2

使用Newtonsoft.Json,你可以這樣做:

dynamic json = JObject.Parse("{'glossary':{'title':'example glossary','GlossDiv':{'title':'S','GlossList':{'GlossEntry':{'ID':'C H A N G E 1','SortAs':'C H A N G E 2','GlossTerm':'Standard Generalized Markup Language','Acronym':'SGML','Abbrev':'ISO 8879:1986','GlossDef':{'para':'A meta-markup language, used to create markup languages such as DocBook.','GlossSeeAlso':['AAA','BBB','CCC']},'GlossSee':'markup'}}}}}"); 

json.glossary.GlossDiv.GlossList.GlossEntry.ID = 1234; 
json.glossary.GlossDiv.GlossList.GlossEntry.SortAs = "abcde"; 

string result = json.ToString();