【问题标题】:Newtonsoft.Json Deserialize issue using php 7.0 json_encode array stringNewtonsoft.Json 使用 php 7.0 json_encode 数组字符串反序列化问题
【发布时间】:2017-08-12 14:02:36
【问题描述】:

PHP 代码:

$arr_return = array('status' => true,'expire' => $SQLGetUserResult['ExpirationDate'],'vip' =>  boolval($SQLGetUserResult['Vip']),'agent'=>true,'exception'=>false);
echo json_encode(array('result'=>$arr_return));

返回:

{"result":{"status":true,"expire":"2017-08-30 00:00:00","vip":false,"agent":true,"exception":false}}

C# 使用 json 将 json 类反序列化为 CSharp

public class Result
{
    public bool status { get; set; }
    public bool agent { get; set; }
    public string expire { get; set; }
    public bool vip { get; set; }
    public bool exception { get; set; }
}

public class RootObject
{
    public Result result { get; set; }
}

反序列化

RootObject Ldata = JsonConvert.DeserializeObject<RootObject>(result);

抛出:

解析值时遇到意外字符:。路径'',第 0 行,位置 0。

不知道为什么会抛出这个异常?

编辑:
[Fiddle - Link code demo]

编辑:

我认为这没有显示在代码、字符串、空白字符串上。 结果不显示

现在工作

我尝试搜索保持谷歌,我找到了一些解决方案 使用记事本 ++ php 文件编码更改为 utf-8 无 bom 选项 但登录 .php 已经 utf-8(nobom) 所以我一直在尝试并发现所需的 php 编码不正确,谢谢!

【问题讨论】:

  • 你的小提琴返回true,无一例外!?正如我所料;)。
  • 您的示例正在运行。检查代码中的转义是否有问题。

标签: c# php json


【解决方案1】:

试试这个:

if (json.Substring(0, 1) != "{")
{
    json = json.Substring(json.IndexOf("{", StringComparison.Ordinal));
}

var result = JsonConvert.DeserializeObject<RootObject>(json);

注意:我认为您的 json 以一些不可见的字符开头。

【讨论】:

  • 有谁知道为什么会这样?
  • @Gohchi 我认为这是因为 PHP 或在客户端发生的,所以;创建一个适当的小提琴,在 PHP 中生成带有附加字符的 json 并用 php 提出问题可能会有意义 - 上面的代码不会返回 Sample Filddle - ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-19
  • 2019-06-16
相关资源
最近更新 更多