循环使用JSON

时间:2016-02-10 13:01:18

标签: c# android xamarin

我正在尝试在我的Android应用中循环一个JSON字符串。这是我到目前为止的代码,使用我在网上找到的答案。

private void updateAutoComplete() {

        var testJSON = "{result:[{\"symbol\":\"FB\",\"typeDisp\":\"Equity\",\"exchDisp\":\"NASDAQ\",\"exch\":\"NAS\",\"name\":\"Facebook, Inc.\",\"type\":\"S\"},{\"symbol\":\"FB2A.DE\",\"typeDisp\":\"Equity\",\"exchDisp\":\"XETRA\",\"exch\":\"GER\",\"name\":\"Facebook, Inc.\",\"type\":\"S\"}]}";
        var autoCompleteOptions = getAutoCompleteOptions (testJSON);

        ArrayAdapter autoCompleteAdapter = new ArrayAdapter(this, Android.Resource.Layout.SimpleDropDownItem1Line, autoCompleteOptions);

        var autocompleteTextView = FindViewById<AutoCompleteTextView>(Resource.Id.AutoCompleteInput);
        autocompleteTextView.Adapter = autoCompleteAdapter;
    }

    private String[] getAutoCompleteOptions(String json) {
        var autoCompleteOptions = new String[20];
        int i = 0;
        dynamic dynObj = JsonConvert.DeserializeObject(json);
        foreach (var data in dynObj.result) { //x
            autoCompleteOptions.SetValue (data.symbol, i);
            i++;
        }
        return autoCompleteOptions;
    }

我想要的是从数组中获取JSON中的不同符号,以便将其用于自动完成。

当我运行应用程序(在OnCreate中调用updateAutoComplete)时,我收到以下错误:'Newtonsoft.Json.Linq.JObject'在标有x的行上不包含'result'的定义。

任何人都知道可能是什么问题?

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果您尝试不再序列化为对象的路径,您可以使用JObject从您需要的字符串中挑选数据。

JObject root = JObject.Parse(testJSON);
var result = (JArray)root["result"];

result.ToList().ForEach(x =>
{
    var symbol = x["symbol"];
    symbol.Dump();
});

//FB
//FB2A.DE