【问题标题】:Unable to cast json value无法转换 json 值
【发布时间】:2021-01-06 14:01:01
【问题描述】:

我无法将值从 json 对象转换为变量。

这是我的 json,它有两种格式之一,我一直想检索格式 1 的值,每当我得到格式 2 的值时,我只需要忽略执行对我的局部变量的赋值。

1.

<Parameters>
      <Param1>"aa9c1b47dfc946f396038b6462700e8c"</Param1>
 </Parameters>
<Parameters>
      <Param1>{"Code":"12345"}</Param1>
 </Parameters>

这是我获取 GUID 值的代码

public static void GetCodes(string code, string msg, params object[] usrLogData)
        {
var proposalId = string.Empty;
 proposalId = (string)userLoggingData.FirstOrDefault();
}

但是,当我获得第二种格式的 XML 值时,我得到了以下异常 无法将“f__AnonymousType0`1[System.String]”类型的对象转换为“System.String”类型。

我尝试了 Dictionary 和 Regex 仍然没有工作。

【问题讨论】:

  • var proposalId = usrLogData.OfType&lt;string&gt;().DefaultIfEmpty("").First()?
  • 这对我有用.. 谢谢,你能解释一下 OfType().DefaultIfEmpty("") 是如何工作的
  • 这意味着,“返回usrLogData 中的所有值v,使得vstring,如果没有这样的值,则返回一个包含空@987654329 的单例序列@"

标签: c# json xml casting


【解决方案1】:

您是否尝试将 XML 解析为您的变量?

例如1,参数是XML而不是json。

例如2,您可能需要传递“{“Code”:“12345”}”作为参数,因为那是您提到的json对象..

此外,您可以尝试使用 newtonsoft 库将 json 解析为您的变量..

try
        {
            //your working code
            var tempproposalId = string.Empty;
            tempproposalId = (string)userLoggingData.FirstOrDefault();
            //your working code
            Guid proposalId;
            if(!Guid.TryParse(tempproposalId, out proposalId))
            {
                //failed to parse GUID, wrong format.. IGNORE
            }


        }
        catch(Exception e)
        {
            //here catch the wrong format for second data,.. you can just ignore it if you wish
        }

【讨论】:

  • 您好,我期待仅在获得第一个 XML 格式数据时才对 proposalId 进行强制转换或赋值,并且每当遇到第二个 XML 格式数据时我必须拒绝或忽略。
  • 我希望您可以上传您正在使用的示例代码和参数,以便对您的问题有更多的了解。无论如何,如果您的解决方案已经适用于第一种格式数据,您可以尝试尝试,捕获..然后如果抛出任何异常,您只需忽略。要验证第一种格式,您可以使用 Guid guidResult = Guid.Parse(inputString)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-14
  • 2019-12-28
  • 1970-01-01
  • 2020-02-25
  • 2020-03-12
  • 1970-01-01
相关资源
最近更新 更多