Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有效Json上的凌空JSONArray分析错误_Java_C#_Json_Asp.net Web Api2_Android Volley - Fatal编程技术网

Java 有效Json上的凌空JSONArray分析错误

Java 有效Json上的凌空JSONArray分析错误,java,c#,json,asp.net-web-api2,android-volley,Java,C#,Json,Asp.net Web Api2,Android Volley,我试图从一个c#web api解析这个JsonString: [{ "LimiteCredito": 123.00, "PessoasFuncionarioId": 16, "Id": 12, "Nome": "Cliente PF A", "DataEdicao": "\/Date(1485019536610-0200)\/", "UsuarioAlteracaoId": "cdf23118-5991-4eb5-9ec4-ea1fc6e6ce3a", "RazaoSocial": "Clien

我试图从一个c#web api解析这个JsonString:

[{
"LimiteCredito": 123.00,
"PessoasFuncionarioId": 16,
"Id": 12,
"Nome": "Cliente PF A",
"DataEdicao": "\/Date(1485019536610-0200)\/",
"UsuarioAlteracaoId": "cdf23118-5991-4eb5-9ec4-ea1fc6e6ce3a",
"RazaoSocial": "Cliente PF A",
"Tipo": 1,
"Cpf": "80158536991   ",
"Sexo": "M",
"TelefonePrincipal": "(41) 9999-9999",
"Email": "comercial@datasig.com.br",
"EstadoRgId": 2,
"Apelido": "Cliente PF A",
"Erp10Id": 1,
"GrupoCrCpId": 1
}, {
    "LimiteCredito": 100.00,
    "PessoasFuncionarioId": 13,
    "Id": 15,
    "Nome": "cliente teste 3",
    "DataEdicao": "\/Date(1484849276613-0200)\/",
    "UsuarioAlteracaoId": "cdf23118-5991-4eb5-9ec4-ea1fc6e6ce3a",
    "RazaoSocial": "cliente teste 3",
    "Tipo": 2,
    "Cnpj": "20720218000128    ",
    "InscricaoEstadual": "ISENTO",
    "TelefonePrincipal": "(0",
    "Email": "cliente3@email.com.br",
    "Apelido": "cliente teste 3",
    "InscricaoMunicipal": "ISENTO",
    "Erp10Id": 1,
    "GrupoCrCpId": 1
}, {
    "LimiteCredito": 3.00,
    "Id": 43,
    "Nome": "asadvadv",
    "DataEdicao": "\/Date(1487379145870-0200)\/",
    "UsuarioAlteracaoId": "cdf23118-5991-4eb5-9ec4-ea1fc6e6ce3a",
    "RazaoSocial": "asadvadv",
    "Tipo": 1,
    "Cpf": "01234567890   ",
    "Rg": "2.231.232",
    "Sexo": "M",
    "TelefonePrincipal": "(34) 11313-1313",
    "TelefoneSecundario": "(13) 13434-1341",
    "Email": "341341341dfdf",
    "Observacao": "wdgwrg",
    "Inativa": true,
    "EstadoRgId": 1,
    "Apelido": "tes te",
    "Erp10Id": 1
}]
这段代码抛出了一个兼容性错误:“那不是JSONArray”

公共类RegrasClienteMixForteHelper扩展请求{
私人反应。听者反应;
私有映射参数;
public RegrasClienteMixForteHelper(int方法、字符串url、映射参数、Response.Listener响应、Response.ErrorListener侦听器){
super(方法、url、侦听器);
this.params=params;
这个。反应=反应;
}
公共映射getParams()引发AuthFailureError{
返回参数;
}
公共映射getHeaders()引发AuthFailureError{
HashMap头=新的HashMap();
header.put(“apiKey”、“application/json”);
返回(标题);
}
@凌驾
受保护的响应parseNetworkResponse(NetworkResponse响应){
试一试{
String jsonString=新字符串(response.data,HttpHeaderParser.parseCharset(response.headers));
JSONArray JSONArray=新JSONArray(jsonString);//错误->这不是JSONArray,与JSONObject相同
返回Response.success(jsonArray,HttpHeaderParser.parseCacheHeaders(Response));
}捕获(不支持的编码异常e){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void deliverResponse(JSONArray响应){
this.response.onResponse(response);
}
}
该代码是从我的活动类调用的:

public class TesteRequisicaoActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_teste_requisicao);

        url = "myUrl";
        queue = Volley.newRequestQueue(TesteRequisicaoActivity.this);

        callByJsonArrayRequest(null);

    }

    // CALLS VOLLEY
    public void callByJsonArrayRequest(View view) {
        Map<String, String> params = new HashMap<String, String>();
        params.put("UserName", "userDemo");
        params.put("Password", "12345678");

        RegrasClienteMixForteHelper request = new RegrasClienteMixForteHelper(Request.Method.POST, url, params, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
                Log.i("Script", "SUCCESS: " + response);
            }
        },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(TesteRequisicaoActivity.this, "Error: " + error.getMessage(), Toast.LENGTH_LONG).show();
                    }
                });

        request.setTag("tag");
        queue.add(request);
    }

    @Override
    public void onStop() {
        super.onStop();

        queue.cancelAll("tag");
    }
公共类TesteRequisitiCaoActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u teste\u requisicao);
url=“myUrl”;
queue=Volley.newRequestQueue(testeRequestsCaoActivity.this);
callByJsonArrayRequest(null);
}
//射门
public void callByJsonArrayRequest(视图){
Map params=新的HashMap();
参数put(“用户名”、“用户演示”);
参数put(“密码”,“12345678”);
RegrasClienteMixForteHelper request=新的RegrasClienteMixForteHelper(request.Method.POST,url,params,new Response.Listener()){
@凌驾
公共void onResponse(JSONArray响应){
Log.i(“脚本”,“成功:+响应”);
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Toast.makeText(testeRequisiticaoActivity.this,“错误:+Error.getMessage(),Toast.LENGTH\u LONG.show();
}
});
请求。设置标签(“标签”);
添加(请求);
}
@凌驾
公共void onStop(){
super.onStop();
queue.cancelAll(“标记”);
}
我试着用
new Gson.parse(string).getAsJsonArray()
解析,同样的错误,用
new JSONObject(string)
解析,同样的错误,我不知道现在该怎么办

有人能解释我应该做什么以及为什么会发生这种情况吗?因为响应是有效的Json

更多信息:

  • web api的响应编码是默认的(我没有更改)
  • json没有换行符和制表符
    \n\t

所以,在我改变了最后一件事,
DateTime
序列化处理之后,我使用以下方式进行序列化:

 private string Json(object anything)
 {
    return JsonConvert.SerializeObject(anything, Formatting.None, new JsonSerializerSettings()
    {
        ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
        ConstructorHandling = ConstructorHandling.Default,
        DateFormatHandling = DateFormatHandling.IsoDateFormat,//Before : MicrosoftDateFormat
        DefaultValueHandling = DefaultValueHandling.Ignore,
        NullValueHandling = NullValueHandling.Ignore,
        ObjectCreationHandling = ObjectCreationHandling.Replace,
        PreserveReferencesHandling = PreserveReferencesHandling.None,
        CheckAdditionalContent = false
    });
}
我使用此方法格式化HTTP响应:

private HttpResponseMessage Response(object response)
{
     return new HttpResponseMessage()
    {
        Content = new StringContent(
                            Json(response),
                            System.Text.Encoding.UTF8,
                            "application/json"
                            )
    };
}
在api控制器中执行的所有操作如下所示:

[HttpPost]
[Route("Clientes")]
public HttpResponseMessage GetClientes([FromBody]WebAuthModel model)
{
    SetUser(model);
    return Response(db.MyEntities.ToList().Select(x => GenericCreator.GetModel(x)));
}
这将为volley框架生成一个可解析的Json

[HttpPost]
[Route("Clientes")]
public HttpResponseMessage GetClientes([FromBody]WebAuthModel model)
{
    SetUser(model);
    return Response(db.MyEntities.ToList().Select(x => GenericCreator.GetModel(x)));
}