从字段中提取特定数据

时间:2014-03-07 16:53:01

标签: php mysql filemaker

使用ODBC,我将filemaker连接到mysql数据库。在mysql数据库记录中,我有一个看起来像这样的字段......

[{"id":"1","value":"Jonny Miller"},{"id":"2","value":"22"},{"id":"3","value":"1"}]

并且所有记录中的其他字段都相同。

我想将'id','value','Jonny Miller'等分开......但不知道如何去做。请你能让我知道我需要做什么或者把我指到哪里,我可以看看怎么做?

感谢您的帮助

Stef

4 个答案:

答案 0 :(得分:1)

使用json_decode()

<?php
$str='[{"id":"1","value":"Jonny Miller"},{"id":"2","value":"22"},{"id":"3","value":"1"}]';
$a=json_decode($str,true);
print_r($a);

答案 1 :(得分:1)

if(!function_exists('json_decode'))
{
    function json_decode($json)
    {
        $comment = false;
        $out = '$x=';
        for ($i=0; $i<strlen($json); $i++)
        {
            if (!$comment)
            {
                if (($json[$i] == '{') || ($json[$i] == '['))
                    $out .= ' array(';
                else if (($json[$i] == '}') || ($json[$i] == ']'))
                    $out .= ')';
                else if ($json[$i] == ':')
                    $out .= '=>';
                else
                    $out .= $json[$i];
            }
            else
                $out .= $json[$i];
            if ($json[$i] == '"' && $json[($i-1)]!="\\")
                $comment = !$comment;
        }
        eval($out . ';');
        return $x;
    }
}

$str = '[{"id":"1","value":"Jonny Miller"},{"id":"2","value":"22"},{"id":"3","value":"1"}]';

$str = json_decode($str);

foreach ($str as $key => $value) {
    echo $value['id'] . " " . $value['value'] . "<br>";
}

注意:我也发布了 json_decode 函数,因为它在新版本的php中不再可用(旧版本也不支持)

答案 2 :(得分:1)

我假设您正在尝试使用FileMaker解析返回的数据。 FileMaker本身不支持json解析(令我非常沮丧:P)。您可以使用一些优秀的时尚文本解析来访问数据。我非常详细地写了这个let语句(即你可以将很多步骤压缩成更少的步骤,但是这个let语句分别显示每个步骤,因此它更容易学习(我认为)):

Let ( [ 
    input              = $currentValue;
    key                = "id"; // Change this to the key you want to pull the value for
    keyStartPosition   = Position (input ; key ; 0 ; 1 );
    valueStartPosition = Position ( input ; "\"" ; keyStartPosition ; 2 );
    valueEndPosition   = Position ( input ;  "\"" ; valueStartPosition ; 2 );
    value              = Middle (input ; valueStartPosition + 1 ; valueEndPosition - valueStartPosition - 1)
 ]; 
    value 
)

使用此代码,您可以编写一个脚本,将json“爆炸”为返回分隔值:

Substitute ( Get ( ScriptParameter )  ; "},{" ; ¶ )

然后,您可以循环遍历每个值,并提取您在let语句中指定的给定ID的值。不幸的是,我无法将FileMaker脚本代码粘贴为此处的代码块,但这里是您将使用的脚本的图像:

Parsing json data in filemaker

我相信还有一些插件可以用来解析json,但是这也可以完成它。

希望这有帮助!

答案 3 :(得分:0)

在FileMaker中有各种自定义函数库用于解析JSON结构。您需要FileMaker Pro Advanced将它们集成到您的解决方案中。 Google快速搜索产生了http://www.modularfilemaker.org/2013/08/json/