Java 从C#WebService生成的JSON字符串中获取值

Java 从C#WebService生成的JSON字符串中获取值,java,c#,android,json,Java,C#,Android,Json,这是我的C#webservice,它生成一个JSON字符串。下面的代码块就是我使用的代码块。 List<Dictionary<String, Object>> lstdict = new List<Dictionary<String, Object>>(); ... ... ... Logic for connecting db and getting records in msqldat (data reader) goes here. .

这是我的C#webservice,它生成一个JSON字符串。下面的代码块就是我使用的代码块。

List<Dictionary<String, Object>> lstdict = new List<Dictionary<String, Object>>();

...
...
... 
Logic for connecting db and getting records in msqldat (data reader) 
goes here.
...
...

while (msqldat.Read())
{
     var detls = new Dictionary<string, object>();
     for (int i = 0; i < msqldat.FieldCount; i++)
         {
             detls.Add(msqldat.GetName(i), msqldat.IsDBNull(i) ? null : 
             msqldat.GetValue(i));
             lstdict.Add(detls);
        }
}
JavaScriptSerializer jss = new JavaScriptSerializer();
String mret = jss.Serialize(lstdict);
{"GetDataResult":"[
{\"uname\":\"hkIUZIikXVTC5aNaSva8IQ==\",
\"passwd\":\"hkIUZIikXVTC5aNaSva8IQ==\",
\"validupto\":\"\\\/Date(1545330600000)\\\/\",
\"dept\":\"juubHSHgLr\/3JWnrZCh5LeeW5Q7lioWOZ1\/Tg+YRy\/o=\",
\"rid\":1},
{\"uname\":\"hkIUZIikXVTC5aNaSva8IQ==\",
\"passwd\":\"hkIUZIikXVTC5aNaSva8IQ==\",
\"validupto\":\"\\\/Date(1545330600000)\\\/\",
\"dept\":\"juubHSHgLr\/3JWnrZCh5LeeW5Q7lioWOZ1\/Tg+YRy\/o=\",
\"rid\":2}]"}
我尝试使用以下Java代码获取android应用程序中的值:

JSONObject uiobj = new JSONObject(mret);
JSONArray arrUserinfo = uiobj.getJSONArray("GetDataResult");
arrUserinfo.getJSONObject(0).getString("uname"))

代码在第二行失败。我是JSON新手。不确定由c#代码生成的JSON是否正确,或者用于解析的java代码是否正确。请进一步建议。提前感谢。

上面的json是序列化的,您需要解析json,然后从中提取对象

看到这个json有效吗

{
    "GetDataResult": [{
            "uname": "hkIUZIikXVTC5aNaSva8IQ==",
            "passwd": "hkIUZIikXVTC5aNaSva8IQ==",
            "validupto": "/Date(1545330600000)/",
            "dept": "juubHSHgLr/3JWnrZCh5LeeW5Q7lioWOZ1/Tg+YRy/o=",
            "rid": 1
        },
        {
            "uname": "hkIUZIikXVTC5aNaSva8IQ==",
            "passwd": "hkIUZIikXVTC5aNaSva8IQ==",
            "validupto": "/Date(1545330600000)/",
            "dept": "juubHSHgLr/3JWnrZCh5LeeW5Q7lioWOZ1/Tg+YRy/o=",
            "rid": 2
        }
    ]
}
要在java中解析json,请参见下文


代码在第二行失败?Post stacktrace?您的json数据格式不正确。这就是它失败的原因。我想逃跑的角色就是这么做的。转到并将json数据粘贴到那里,查看其格式是否正确。json的某些部分似乎已被双重序列化,尽管您使用的是
JavaScriptSerializer
而不是
json.NET
。您能展示一下如何从Web服务返回JSON吗?@AswinPAshok感谢您的回复。我参考了jsonformatter.org,发现JSON的格式无效。谢谢。@dbc感谢您的回复。这是我从WebService回来的方式。非常感谢您的帮助。我的JSON字符串中有错误。但它是从c#类自动生成的。但是JSONParser返回一个未知的符号。我让JSONParser工作了。我想我需要首先将C#的JSON输出更正为您在这里显示的输出。我会尽力做到的。谢谢。是的,json输出是序列化的。