我正在ASP.NET中編寫一個應用程序,以便在Azure網站中運行,該網站獲取一些JSON並根據用戶輸入返回值。例如:安全且高效地評估簡單的字符串以查詢.NET POCO
dynamic json = GetSomeJSONAndParseToDynamicClass();
var userInput = "somefield.somearray[20].somefield";
var output = GetValueFromObject(json,userInput);
在上面的例子中,實現「GetValueFromObject」的最佳方法是什麼?我可以想到幾種可能性,但我不確定它們全部:
- 解析用戶輸入字符串 - 在'。'上分割。和'[n]',然後用它來評估查詢。
- 使用一些腳本引擎來評估表達式。
- 轉換爲XML和解析的XPath的
是否有.NET本身事情要做到這一點,還是不錯的庫來獲得這種功能?
在我看來,這樣將需要大量棘手的反思和分析來完成的,而不是你'你想嘗試打滾自己。你有沒有考慮過使用[IronPython](http://ironpython.net/)或[CS-Script](http://www.csscript.net/)? – mason
我對CS-Script不熟悉,但這些都有可能性。我想我擔心1)腳本引擎過於「沉重」,2)用戶可能會發送惡意輸入。我應該有資格:這是一個在Azure網站上運行的ASP.NET應用程序... – Daniel
@Daniel如果你想讓它真的輕量級(只是成員訪問或索引訪問),你自己寫它並不難。 – Andrey