ホームページ  >  記事  >  バックエンド開発  >  ヘルプ: このような JSON 文字列のフォーマット方法、構文の書き方は? ()

ヘルプ: このような JSON 文字列のフォーマット方法、構文の書き方は? ()

WBOY
WBOYオリジナル
2016-06-23 14:00:20933ブラウズ

たとえば、2 次元配列があります
$myarrnews=array();
$myarrnews =explode("||**||", $mystr); // コンテンツは $mystr から取得されます。 records
$myarrline= array();
$myarrline =explode("||%%||", $myarrnews[$i]); //$myarrline は複数のフィールドを含むレコードの 1 つです
print_r($myarrline ); 各ニュースのフィールドのコレクション、例: Array ([0] => 10 [1] => 2166 [2] => Innovation...
次に、このような JSON 文字列、形式が必要です。は:(一時的に1ページに5件表示するように設定)
{
"ret": 0,
"data": {
"newslist": [
"ret": "最初のニュースのタイトル",
"commentcount" : 0、
"source": "ソース"、
"nid": 10、
"ダイジェスト": "ニュース"、
"ptime": "2012-03-28 14:11:43"
}、

"title": "2 番目のニュースのタイトル",
"commentcount": 0,
"source": "ソース", nid": 9,
"digest": "ニュース紹介",
"ptime" : " 2012年-03-28 13:12:56"
}, mentcount": 0、
"source": "source"、
"nid ": 8、
"ダイジェスト": "ニュース紹介",
"ptime": " 2012-03-28 12:21:11"
}、 "コメント数": 0、
"ソース": "ソース"、
"nid": 7、
"digest": "ニュース紹介"、
"ptime": "2012-03-28 11:21:00"
}、

「コメント数」: 1、
「ソース」: “source”,
“nid”: 5,
“digest”: "ニュース紹介",
"ptime": "2012-02-18 19:20:01 "
" " " }
" " " ], " "totalnum": 5
" " }, " "msg": "ok"
}
//---------------------- -- ----
PHP 構文の書き方?助けてください、緊急に必要です!


ディスカッション (解決策) に返信します
私は php の初心者で、間違いなく初心者です。返信するときは、コードと手順の詳細を教えてください。ありがとうございます

$mystr の内容は何ですか? 元のデータがどのようなものかを常に投稿する必要があります。

[code=php]詳細:
$weblink="http://www.xxx.net.cn/news/getnews.asp?cid=4&topnum=10";
$mystr=file_get_contents($weblink); $myarrnews=array();
// ニュース条件を配列に分割します
$myarrnews =explode("||**||", $mystr); // print_r ($myarrnews);分類ID以下の10個のデータ
//特定のコンテンツ条件を配列に分割
/*
以下は収集されたデータセットを説明します。つまり、各データには以下のフィールド情報が含まれており、この情報は$myarrnews で入手しました!
0: 収集した情報量を表す
1: 情報元ID番号(ニュース分類ID番号)
2: 情報タイトル
3: 情報カテゴリ
4: 情報内容
5: ホームページ画像の有無
6: 訪問数
7: リリース担当者
8: サブタイトル
9: 情報リリース時間
*/
$obj->ret=0;
$newslist=array("newslist"=>array()); =0;$ i1d11b70833341267c65064d83053391e 2166 => 模範的な従業員のための家庭を作る革新的な労働組合の取り組み [4] => 例:
if ($myarrline[$i] !="") $ニュースリスト[$i]=>'タイトル'=$myarrline[2];
ニュースリスト[$i]=>コメント数=0; $ newsList [$ i] = & gt; 0;
$ Newslist [$ i] = & gt; $ myarrline [9];
本物の URL を教えてください
元のアドレスは使用できません。セキュリティ上の理由から、情報が詳しく記載されています。主人公は他にどんな情報を望んでいるのだろうか?
生成された JSON 文字列が類似している限り

次に、少なくとも 1 つのデータを指定する必要があります (架空の場合でも)
そして、JSON メンバーとの対応関係を指摘する必要があります

実際、フロア #3 のコードを読んで次の行を確認すると、次の行が表示されます。
$newslist[$i]=>'title'=$myarrline[2];
必要な形式をおおよそ推測できます。一般的な構文形式がある限り、各フィールドに 1 つずつ対応する必要はありません (実際、一部のフィールドはまだ変更する必要があります)。さらに詳しい内容をご覧になりたいので、改めて説明させていただきます。
//----------------------------------------------- --- --------------------------------------------------- --- --
$weblink="http://www.xxx.net.cn/news/getnews.asp?cid=4&topnum=5";
$mystr=file_get_contents($weblink); ();
//ニュース条件を配列に分割します
$myarrnews =explode("||**||", $mystr); // print_r ($myarrnews);このカテゴリ ID コレクション
//特定のコンテンツ条件を配列に分割します
//上記のコードは、asp Web ページから cid=4 で分類されたニュース (大学ニュースなど) の合計 5 つのレコードを取得できます
//--- ---------- -------------------------------------- ------- -------------------------------------
//以下コード、変数 $myarrline ニュース レコードの 1 つについて、このニュース レコードには 10 個のフィールドが含まれており、値が取得されています。 2 番目のフィールドはニュース ID 番号 (つまり、nid)、[1] => 2166 (0# フロア コードを参照) です。 3 番目のフィールドはニュースのタイトルです。例: [2] => 労働組合の働き方の革新、従業員のモデルホームの作成など。一つずつ説明するつもりはありません。このニュースは、取得した 5 つのニュース項目のうちの最初のニュースです。誰もがそれを理解しています! ? //各ニュースのフィールドのコレクション、例: Array ([0] => 5 [1] => 2166 [2] => モデル従業員ホームを作成するための革新的な労働組合の取り組み [3] => ; 大学ニュース [4] =>...
/ /---------------------------- -------------- -------------------
//最後に、次の json 文字列に変換して再編成する必要があります。フロア 0# は 5 つのレコードを含む配列であり、各レコードにはタイトル 2 などのフィールドが必要です。完了しました!

人を助けることには間違いがつきものです


私はこのコードだけでは理解できません。 newlist 配列内の 5 つのレコードがループを使用して実装されている 0# フロア JSON 文字列の例です
もう一度、ありがとうございます

 $newslist[$i] = array(  'title' => $myarrline[2],  'commentcount' => 0,  'source' => $myarrline[7],  'nid' => $myarrline[1],  'replycount' => 0,  'ptime' => $myarrline[9],);

$newslist #8 の生成が実証されました。例に従うことができます

実は私の当初の意図はこうでした:
//-------------------------------------- ------ - $ i< count($ myarrnews); $ i ++){||各ニュースの各分野のコレクション。例: array ([0] = & gt; 10 [1] = & gt ; 2166 [2] => 労働組合の活動を革新し、模範的な労働者の居場所を作る [3] =>大学ニュース [4] =>
No$i";
gt ;getTitle();
$newsobj->setSource($myarrline[7]); line[1]);
$newsobj- >setReplycount(0) j; //ここの割り当てに問題があります
「今年中に収集されたデータはありません。このサイトには最新のデータ情報がない可能性があります。 ";
in df250b2156c434f3390392d09b1c9563
echo "元の ID : ".$myarrline[1]."b4df3add63256134178b35c1116165af]*?)>','',myarrline[4]); echo "コンテンツ: ".$myarrline[4]."< br />";
echo "写真: ".$myarrline[5]."
";
echo "訪問: ".$myarrline[6]."df250b2156c434f3390392d09b1c9563
echo "発行者: ".$myarrline[7]."2bf35283930233d632b542943033cab8$newsobj;ここ! !
さらに、私は合計 2 時間しか php を学習していませんが、
$obj->ret=0; と
$obj = array(
!

$data = array(" newslist"=>$newlist,"totalnum"=>5);
明らかに、値の割り当ては for ループの前ではなく後に行う必要があります。

いいえ、そのプロンプト行にはまだ問題があり、モバイル コードも機能しません:
$obj->ret=0;
$data=array("newslist") =>$newslist," totalnum"=>5);
for ($i=0;$i エコー "---------- ------" ;
$myarrline=array();
$myarrline =explode("||%%||", $myarrnews[$i]);
print_r($myarrline); //コレクション各ニュースのフィールド数、例:Array ([0] => 10 [1] => 2166 [2] =>gt; 労働組合活動の革新と従業員のモデルホームの作成 [3] => College News [ 4] => if ($myarrnews [$ i]! = "") {
echo "no $i";
$ newSobj- & GT; ".$newsobj->getTitle(); //ここでタイトルの値を取得できます

$newsobj->setNid($myarrline[1]); );このサイトには最新のデータ情報がない可能性があります。 ";
."df250b2156c434f3390392d09b1c9563";
echo "元の ID: ".$myarrline[1]."
";
echo "タイトル: ".$myarrline[2]"。 df250b2156c434f3390392d09b1c9563";
echo "カテゴリ: ".$myarrline [3]."acba80499df418f9e8a37cd21d4f1ac3] *?)>','',myarrline[4]);
echo "コンテンツ:".$myarrline[4]."
";
echo "画像:".$myarrline[5] ."df250b2156c434f3390392d09b1c9563";
echo "訪問者:" .$myarrline[6]."
";
echo "発行者: ".$myarrline[7]."df250b2156c434f3390392d09b1c9563";
echo "字幕: ".$myarrline[8 ]."b72afdd7bf19897748d376f661e16432";
 echo "cdcaaee4c9b94464012808ae8e1b67a4";
 */ 
  $obj->msg ="ok";  
  print_r(json_encode($obj));

  for ($i=0;$i3c5372b740f29053cf12070e6dea4629 10 [1] => 2166 [2] => 创新工会工作 创建模范职工之家 [3] => 学院新闻 [4] =>
 if ($myarrnews[$i]!="") {
    
             $newslistarr=array('title' => $myarrline[2],   'commentcount' => 0,   'source' => $myarrline[7],   'nid' => $myarrline[1],   'replycount' => 0,   'ptime' => $myarrline[9], );                
                       $newslist[$i]=$newslistarr;
                       }
//--------------------------------------------
这样也不行,格式化后结果:{"ret":0,"data":{"newslist":[],"totalnum":5},"msg":"ok"} 数组是空的。
无奈了,php语法究竟怎么写呢?

$newslist[$i]   = $newsobj
你的多了个>

$newslist[$i]   = $newsobj
你的多了个>
是的,我这里写错了,不过改正之后,还是不行
格式化后结果:{"ret":0,"data":{"newslist":[],"totalnum":5},"msg":"ok"} 数组是空的。

我已经放弃使用对象了,php里对象转数组效率太低!

终于整出来了!是php二维数组的语法格式不会啊,绕了很多弯路。十分感谢ohmygirl的帮忙!
把代码贴出来,供大家参考下:
//---------------------------------------------------------------

<?php//数据库信息编码的设置header("Content-type: text/html; charset=utf-8");?> <?php/************************************************************** * *	使用特定function对数组中所有元素做处理 *	@param	string	&$array		要处理的字符串 *	@param	string	$function	要执行的函数 *	@return boolean	$apply_to_keys_also		是否也应用到key上 *	@access public * *************************************************************/function arrayRecursive(&$array, $function, $apply_to_keys_also = false){    static $recursive_counter = 0;    if (++$recursive_counter > 1000) {        die('possible deep recursion attack');    }    foreach ($array as $key => $value) {        if (is_array($value)) {            arrayRecursive($array[$key], $function, $apply_to_keys_also);        } else {            $array[$key] = $function($value);        }         if ($apply_to_keys_also && is_string($key)) {            $new_key = $function($key);            if ($new_key != $key) {                $array[$new_key] = $array[$key];                unset($array[$key]);            }        }    }    $recursive_counter--;} /************************************************************** * *	将数组转换为JSON字符串(兼容中文) *	@param	array	$array		要转换的数组 *	@return string		转换得到的json字符串 *	@access public * *************************************************************/function JSON($array) {	arrayRecursive($array, 'urlencode', true);	$json = json_encode($array);	return urldecode($json);}?><html>  <head>    <title>校园移动APP    </title>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  </head>  <body  leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">    <table  width="890"  border="0" cellpadding="4" cellspacing="3" align="left" style="font-size:13px">      <tr><td>          <hr>导航---【采集结果】2:          <br>          <br>          <br>          <br><?php		//信息采集地址,参数是默认采集当前年份下10条信息 系统限制到最大50条信息						 $weblink="http://newinfor.lnmec.net.cn/news/getnews.asp?lx=74&topnum=5";				// echo $weblink;				 $mystr=file_get_contents($weblink);//每次10条!				 $myarrnews=array();				 //拆分分条新闻条件成数组				 $myarrnews =explode("||**||", $mystr);			//	   print_r ($myarrnews);              //该分类ID下前10条数据的集合				 //拆分具体内容条件成数组    				 /*				    下面对采集的数据集合进行描述					0:代表采集信息数量					1:信息原始ID号 (新闻分类ID号)					2:信息标题					3:信息类别					4:信息内容					5:是否首页图片					6:访问量					7:发布人					8:副标题					9:信息发布时间				 */         $obj=array();				 $obj["ret"]=0;	                  $newslist=array();	 				          for ($i=0;$i<count($myarrnews);$i++){                       echo "-----------------";				   $myarrline=array();		            $myarrline =explode("||%%||", $myarrnews[$i]);                 print_r($myarrline);                     //每个新闻各个字段的集合,例如:Array ( [0] => 10 [1] => 2166 [2] => 创新工会工作 创建模范职工之家 [3] => 学院新闻 [4] =>					 if ($myarrnews[$i]!="") {             echo "No$i";               $newslist[$i]['title']=$myarrline[2] ;               $newslist[$i]['commentcount']=0 ;              $newslist[$i]['source']=$myarrline[7] ;              $newslist[$i]['nid']=$myarrline[1] ;              $newslist[$i]['replycount']=0;              $newslist[$i]['ptime']=$myarrline[9] ;              }            else					  {					    echo "在当前年度内没有采集到数据!可能是本站没有最新数据信息!"; 					  }                       }          $data=array("newslist"=>$newslist,"totalnum"=>5);           $obj["data"]=$data; 				  $obj["msg"] ="ok";  								  print_r(JSON($obj));           				  $newslist=NULL;				  $obj=NULL;           ?>          </td>      </tr>    </table>  </body></html>

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。