【问题标题】:Fetching Data from Webserver onto iPhone returns Garbage values从 Web 服务器获取数据到 iPhone 会返回垃圾值
【发布时间】:2011-03-21 10:04:43
【问题描述】:

我正在使用此查询通过 JSON 解析从网络服务器获取数据到我的 iPhone 应用程序。

SELECT a.FundID, a.FundName, a.Strike, a.LongShort, a.Current, a.Points, a.OpenClose
FROM tbl_Positions a, tbl_FundStatic b
WHERE b.FundID = a.FundID
AND b.UserID = '14'
AND a.OpenClose != 'Close'
UNION 
SELECT c.FundID, c.FundName, '0' AS Strike, "-" AS LongShort, b.LastTradePrice, '0' AS Points, "-" AS OpenClose
FROM tbl_FundStatic c, tbl_MarketData b
WHERE c.UserID = '14'
AND b.IndexCode = c.`Index` 
AND c.FundID NOT 
IN (
     SELECT DISTINCT (FundID)
     FROM tbl_Positions
   )

理想情况下它应该返回像

这样的数据

但它显示 PointsStrike 列的垃圾值(如“MA==”等)。

可能出了什么问题?

编辑:

我正在使用 SBJSON 解析器。

我正在使用以下代码在服务器端将数据解析为 JSON 字符串:

        DataTable dt = new DataTable();
        MySqlDataAdapter da = new MySqlDataAdapter(cmd);
        da.Fill(dt);
        objMyCon.Close();

        String jsonString = JsonConvert.SerializeObject(dt);
        String finalString = "{\"ExecuteTrade\":";
        finalString += jsonString;
        finalString += "}";

        return finalString; 

finalString 值

{"ExecuteTrade":[{"FundID":28,"FundName":"Sam Fund 2","Strike":"MTIxMzA=","LongShort":"Long","Current":11985.00,"Points":"LTE0NQ==","OpenClose":"Open"},
{"FundID":27,"FundName":"Sam Fund 1","Strike":"MTE5ODU=","LongShort":"Long","Current":11985.00,"Points":"NTAwMDA=","OpenClose":"Open"},
{"FundID":32,"FundName":"Sam Fund 3","Strike":"MjIwMDA=","LongShort":"Long","Current":14000.00,"Points":"NjAwMA==","OpenClose":"Open"},
{"FundID":45,"FundName":"Rob Fund test","Strike":"OTk5OQ==","LongShort":"NULL","Current":11984.61,"Points":"OTk5OQ==","OpenClose":"NULL"},   
   {"FundID":46,"FundName":"newtestfund5th","Strike":"OTk5OQ==","LongShort":"NULL","Current":11984.61,"Points":"OTk5OQ==","OpenClose":"NULL"}]}

这是数据表:

在应用端我正在使用

NSDictionary *diction = [responseString JSONValue];

注意:查询在服务器上执行时工作正常。

【问题讨论】:

    标签: iphone mysql json


    【解决方案1】:

    在每个问题到达您的 iPhone 之前进行故障排除。如果你在数据库主机上运行查询,你会得到什么?如果您通过 Web 服务器运行查询,您会得到什么 JSON 响应?

    另外,您使用什么框架来解析 JSON?粘贴显示您如何解析响应的代码 sn-p 可能有助于提供更有针对性的答案。

    【讨论】:

    • 感谢您的快速输入。我会尽快添加代码
    • 我正在使用 SBJSON 解析器。我已经编辑了我的问题并添加了处理 JSON 解析的代码。
    • 你向 iPhone 发送什么 JSON 字符串? (finalString 在发送到 iPhone 之前的值是多少?)
    • finalString 给出了PointsStrike 的垃圾值。数据表在 StrikePoints 列中显示 'System.Byte[]` 值可能有什么问题?
    • @Alex Reynolds:感谢您的帮助。我找到了答案。尽管感谢您展示了继续进行的方式。 :)
    【解决方案2】:

    将我的查询更改为

    SELECT a.FundID, a.FundName, a.Strike, a.LongShort, a.Current, a.Points, a.OpenClose
    FROM tbl_Positions a, tbl_FundStatic b
    WHERE b.FundID = a.FundID
    AND b.UserID = '14'
    AND a.OpenClose != 'Close'
    UNION 
    SELECT c.FundID, c.FundName, 0 AS Strike, "-" AS LongShort, b.LastTradePrice, 0 AS Points, "-" AS OpenClose
    FROM tbl_FundStatic c, tbl_MarketData b
    WHERE c.UserID = '14'
    AND b.IndexCode = c.`Index` 
    AND c.FundID NOT 
    IN 
    (
          SELECT DISTINCT (FundID)
          FROM tbl_Positions
    )
    

    刚刚删除了十进制值周围的单引号'

    【讨论】:

    • 干得好!自己找到答案总是更让人满足。
    猜你喜欢
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    相关资源
    最近更新 更多